请选择 进入手机版 | 继续访问电脑版

触摸屏与OLED论坛

 找回密码
 注册论坛
查看: 38135|回复: 236

使用flash CS5来实现多点触摸(Multi-touch)的功能,多点触摸教程

    [复制链接]
发表于 2010-10-22 13:41:55 | 显示全部楼层 |阅读模式
iPhone刚出来的时候最让我惊喜的莫过于多点触摸(Multi-touch)和手势,酷的一塌糊涂。超多游戏好应用使用了多点触摸技术,废话不多,来看看在Flash cs5中如何实现多点触摸。- _* P9 d+ t: @5 G, w& A; |* p5 X4 J

* U+ {+ s/ p5 D/ t; b6 e7 L4 M这些在Flash cs5中都可以轻松实现。
  1. AS新增加类包  flash.events.TouchEvent; 多点触摸事件
    & [7 ?; o9 d8 h8 ~1 @8 J
  2. Property:- j7 O- E2 v3 B" F
  3. altKey : Boolean //设置Alt键激活与否- r7 z# H0 j0 f& {9 ?" v
  4. commandKey : Boolean //设置Command键激活与否
    * ~0 O" v: o% L* Q- ]/ e1 B
  5. controlKey : Boolean //设置Control键激活与否9 b( X- l6 x3 ?
  6. ctrlKey : Boolean //设置Ctrl键激活与否$ s5 Y. A: O7 n) A' |1 F
  7. isPrimaryTouchPoint : Boolean //接触的第一个点是否被看成鼠标事件
    8 i& O! y) T9 I6 y& T  P
  8. isRelatedObjectInaccessible : Boolean //安全设置
    1 p* N- V1 o7 q* m, ^4 e
  9. localX : Number  //相对x坐标/ [( l7 r. Q% i; p3 j% O9 N
  10. localY : Number  //相对y坐标; j' ~5 ^+ J" s  d
  11. pressure : Number //于设备接触的压力
    6 I0 U1 o# T3 q6 U% C' [
  12. relatedObject : InteractiveObject// 显示相关的Object
    * V8 q5 T' _8 f
  13. shiftKey : Boolean// 设置ShiftKey键激活与否
    - t+ E$ T& a! t6 g  T
  14. sizeX : Number// 触摸时的宽度
    . [1 C3 b4 M) n( i5 W# b
  15. sizeY : Number //触摸时高度- [9 y# P2 ?1 [! S& e$ l
  16. stageX : Number //全局X坐标; L! C; T1 k4 N* b
  17. stageY : Number //全局Y坐标
    ; H. [; U( x# A
  18. touchPointID : int //接触点的ID识别码
    % O; Y3 m& |, Q9 D% Q

  19. 9 N+ E- Z, B  m6 B3 B
  20. Methods:
    # |1 W6 F; r; H  v2 O
  21. TouchEvent8 N% _( \1 v- q7 `* V+ \
  22. 0 z4 R4 @% a, D8 g. ]9 _
  23. AS新增加类包 flash.ui.Multitouch; 多点触摸管理类
    : T0 ]* t5 U3 ]' [% N' V* H- r/ C
  24. inputMode : String  //触摸事件的处理模式(多点或是手势); i& w  ^1 O8 l% ^* ^( [  g
  25. maxTouchPoints : int  //当前环境所支持同时进行的接触点的最大数量' @+ {* a* n9 v  |# p
  26. supportedGestures : Vector. //当前环境所支持多接触的类型
    1 ]0 r, P0 E  j& U0 S, Y6 _
  27. supportsGestureEvents : Boolean //当前环境是否支持手势3 ]+ Y! `0 y% n" a& v
  28. supportsTouchEvents : Boolean //当前环境是否支持基本的触摸
复制代码
 楼主| 发表于 2010-10-22 13:44:46 | 显示全部楼层
1.png
% [+ W% C  B9 J: S7 [& z
Flash多点程序截图

3 R3 t0 Y+ F) f, d2 P# o' }% {" J! q+ E5 X# }
" M5 o8 T& K9 B. j4 W5 [- J. T5 {
源代码
  1. /* @author jimmy
    # h) F3 a2 N) @4 h% U4 O
  2. * www.jimmy.sh
    ! {$ @& x* b9 m0 u
  3. */
    % ]0 q9 l7 C( E4 v2 w+ |
  4. package! N# g- A' h$ d6 H& o, r
  5. {
    7 o- O9 P6 U0 m9 V/ F. z1 @/ [$ Y6 d

  6. 9 T4 Q0 c! ~, N) @( Z
  7.         import flash.display.DisplayObject;
    1 H+ @( I! U+ ?  k3 L5 ]) u
  8.         import flash.display.Sprite;
    + U1 [- z2 i" ?3 A& J& h( Q% b
  9.         import flash.events.TouchEvent;. F: Z% b8 N2 r2 G& w( I# M
  10.         import flash.ui.Multitouch;
    5 X& b; c8 x5 m7 |, k
  11.         import flash.ui.MultitouchInputMode;
    0 l, m1 M7 W7 H1 U) B0 n. X) Z$ A: r
  12. 0 ~% E2 x3 o  E$ L* F7 N! W" V$ c
  13.         public class main extends Sprite+ a2 V+ v' ?2 a* L/ S
  14.         {        ; J( ]1 Y6 Q0 A2 I$ m, ^, i7 L

  15. 9 Q- O0 Y1 M  |# H
  16.                 public var s1:Sprite;
    9 D) ?# V9 V* C0 c$ H0 Y+ B0 a
  17.                 public var s2:Sprite;, R% M: s) ^" c, a3 A! Y+ S
  18.                 public var s3:Sprite;
    5 R2 c0 [' w8 D
  19.                 public var s4:Sprite;+ n& `+ S- Q+ y5 B! i
  20.                 public var s5:Sprite;6 q- g5 ~4 U: N4 I+ D
  21.                 public var s6:Sprite;2 X' j# n1 c+ E% A: Y/ d. [9 {
  22.                 protected var touchMap:Array= [];
    ) w6 @; e6 q' y! s# l' Y
  23.                 protected var touchMc:Array;& x( C& C: T* `4 \
  24.                 public function main()
    $ D1 G4 L4 P! c# w4 X7 h
  25.                 {+ L6 h, ^. K; Z+ X3 d% h$ C1 S: ~. X
  26.                         touchMc=[s1,s2,s3,s4,s5,s6];
    9 {3 h* f3 d8 Q1 C' |$ V
  27.                         //多点触摸类型% _, L7 \) U# Z. |% u7 |. S3 Q
  28.                         Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT;
    1 r! `1 y  T  U8 L
  29.                         //添加3个多点触摸事件
    ! @7 R3 n5 f7 Y( m" ~" x
  30.                         this.addEventListener(TouchEvent.TOUCH_BEGIN,touchBeginHandler);
    ; T0 L9 F" f! \+ x, p
  31.                         this.addEventListener(TouchEvent.TOUCH_END,touchEndHandler);
    1 M: W, f; U6 r0 d/ j2 L7 c& U
  32.                         this.addEventListener(TouchEvent.TOUCH_MOVE,touchMoveHandler);0 h) |7 ^% @, O: }- E6 ]
  33.                 }
    $ C. }- F, ?+ B& t, E# Y2 v
  34.                 //触摸开始事件
    . P5 I( v6 d9 h4 W2 r
  35.                 protected function touchBeginHandler(event:TouchEvent):void
    2 M9 Q- m  [4 D. w8 x8 E6 o
  36.                 {2 U5 W. c9 v: y% ?
  37.                         addChild(DisplayObject(event.target));
    3 U# I5 D+ p$ ]# ?4 V8 B0 K
  38.                         touchMc.sort(depthFunction);/ b: A' P  ~2 b( e
  39.                         var touchPoint:Object={};2 \& _+ G* S( q. `- |+ r
  40.                         touchMap[event.touchPointID] =touchPoint;8 M0 |: |' ~, f- x7 N9 t- C
  41.                 }8 X! o& }/ [( l$ m$ R0 A7 \
  42.                 //根据深度排序,为了让判断的时候先判断前面的物体
    ( J- E9 D2 a. e& j
  43.                 protected function depthFunction(a:Sprite,b:Sprite):int
    ) O$ Z9 G/ Z0 D3 O
  44.                 {
    9 K1 @" I8 O  s* ?1 q
  45.                         if(getChildIndex(a)>getChildIndex(b))
    & y2 o, _4 H) \/ n3 M# Y
  46.                                 {/ O. N) K  n1 C) i8 V# T% \
  47.                                         return -1;
    - v: r4 C$ r- A" W1 D0 n6 g
  48.                                 }else {" T6 p6 F8 I6 Q  d7 n
  49.                                         return 1;
    3 F; P/ K$ b- V/ O5 p) R2 ^# U
  50.                                 }; y  F" c2 x6 L/ t5 v
  51.                 }0 A: n8 N) T' ~  U: J( x
  52.                 //触摸事件结束事件* K: \8 z" |8 d7 v. p* T
  53.                 protected function touchEndHandler(event:TouchEvent):void& @5 Z. A8 `: p% F# d' b
  54.                 {0 H% g/ s* w" C; `$ ~5 r1 D8 F
  55.                         delete touchMap[event.touchPointID];
    3 y0 U. z/ C, n: K: m
  56.                 }
    0 ]. F8 ^- f: w/ }/ a
  57.                 //触摸点移动事件
    5 S2 k! J+ Z. y
  58.                 protected function touchMoveHandler(event:TouchEvent):void4 e. P8 Y/ c- f* {3 w
  59.                 {6 [  r( \- u  u* j' z- R$ e9 F
  60.                         var key :int =event.touchPointID;
    - [, ~3 d% ^& x4 C: l$ v  ~4 Z
  61.                         //判断触摸到那个mc,并让mc跟着手指移动
    + `! B, A: s6 ?# s; i
  62.                         if(touchMap[key])
    # C, I0 x' [$ v$ X/ |+ K2 y
  63.                         {* C2 U- N7 O. Z3 X1 n+ @, }! t7 x
  64.                                 for(var i:int=0;i<6;i++)
    1 q, E! n5 ]+ s8 m) s6 U
  65.                                 {
    ' @* p: E! R3 Y, L$ c" d
  66.                                         var _mc:Sprite=touchMc[i];+ z% u1 T3 m" p; w8 B4 _0 F
  67.                                         if(_mc.hitTestPoint( event.stageX,event.stageY))
    : ]4 E: L. s3 K9 T
  68.                                                 {. e5 e" N4 G3 a9 g& g8 {
  69.                                                         _mc.x=event.stageX;
    # `6 a7 Z) s( _
  70.                                                         _mc.y=event.stageY;' h) n0 Y7 ?( u/ x3 E3 R9 n# \
  71.                                                         break;
    - ~" |, Z8 d, j, T/ m
  72.                                                 };. Q# V. p9 Y) ^1 ]
  73.                                 }
    " q3 E7 n/ Y  P- H7 y; @1 _
  74.                         }0 I( C# ]  J  i& A% H* ]4 [/ l
  75.                 }
    " ^% c0 t" v# n% P9 U
  76.         }
    2 \) h+ p+ k1 D# R/ K. q
  77. }
复制代码
这里下载Flash源文件
( I0 _/ h7 @9 @, f$ L/ Z' N+ h2 v6 c0 \0 t, O: _
Multi-touch.zip (231.45 KB, 下载次数: 618)
发表于 2010-10-25 11:22:43 | 显示全部楼层
路过,顶一下!
发表于 2010-10-25 12:34:32 | 显示全部楼层
顶了 好东西
发表于 2010-10-29 17:51:48 | 显示全部楼层
不太清楚,帮顶一下。
发表于 2010-11-4 17:18:01 | 显示全部楼层
可以给我发一份源文件吗?新来的还没金币感谢啊!! cy09051422@163.com
 楼主| 发表于 2010-11-4 17:44:36 | 显示全部楼层
回两个帖子就有金币了) u$ K' a+ m8 y& K
& ~. k  |, t- Y. |* F, J+ ]8 @4 v
然后就可以下载了
发表于 2010-11-4 20:33:46 | 显示全部楼层
顶一下,看起来不错哦
发表于 2010-11-16 11:57:23 | 显示全部楼层
DDDDDDDDDDDDDDDDDDDDDDDDDDD
发表于 2010-11-19 10:36:38 | 显示全部楼层
不错,学习一下
您需要登录后才可以回帖 登录 | 注册论坛

本版积分规则

地址:成都市高升桥东路2号高盛中心1109室 电话:028-85108892 13183843395
版权所有 Copyright(C) 51Touch.Com All rights reserved Archiver 触摸屏与OLED网 电子邮件:51touch@126.com
在线咨询QQ:触控面板,触摸屏原理,触摸屏一体机咨询 190798948    在线咨询微信: 13183843395(扫描下方二维码)

蜀ICP备05002005号
快速回复 返回顶部 返回列表