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

触摸屏与OLED论坛

 找回密码
 注册论坛
查看: 33219|回复: 228

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

    [复制链接]
发表于 2010-10-22 13:41:55 | 显示全部楼层 |阅读模式
iPhone刚出来的时候最让我惊喜的莫过于多点触摸(Multi-touch)和手势,酷的一塌糊涂。超多游戏好应用使用了多点触摸技术,废话不多,来看看在Flash cs5中如何实现多点触摸。
& J9 u5 e3 t- z
! w0 l$ x( @7 Z" V3 [2 r. Y- f( h2 x这些在Flash cs5中都可以轻松实现。
  1. AS新增加类包  flash.events.TouchEvent; 多点触摸事件" B% \+ I1 R7 G
  2. Property:
    $ \+ y5 u1 @, `7 H, T. ?$ B/ E3 p
  3. altKey : Boolean //设置Alt键激活与否
    # ]" }9 ?) j1 @+ f$ _
  4. commandKey : Boolean //设置Command键激活与否( x6 U; {0 y+ z/ o) [1 n/ v
  5. controlKey : Boolean //设置Control键激活与否
    1 _' K, @# k$ G: E. E  L
  6. ctrlKey : Boolean //设置Ctrl键激活与否
    6 y! q% l' s$ }  n  m. b7 t: z/ ~
  7. isPrimaryTouchPoint : Boolean //接触的第一个点是否被看成鼠标事件
      ]* ~" k9 }' E' h% x5 F
  8. isRelatedObjectInaccessible : Boolean //安全设置( y" d3 w/ M4 X& b1 {; o; _: Y; h
  9. localX : Number  //相对x坐标
    7 r9 V# J( Z1 c8 ~! p7 t
  10. localY : Number  //相对y坐标+ z; b; R" R- S) |+ h
  11. pressure : Number //于设备接触的压力
    * h5 s; a4 v0 p. F3 W4 Q5 a
  12. relatedObject : InteractiveObject// 显示相关的Object9 @3 p7 e$ B) t5 }9 X4 D
  13. shiftKey : Boolean// 设置ShiftKey键激活与否
    ; L& A0 V7 ^: H7 s7 b) ~3 m
  14. sizeX : Number// 触摸时的宽度
    - b  r! E% D( I% H
  15. sizeY : Number //触摸时高度* J! h7 e% o7 x& S/ ^" |
  16. stageX : Number //全局X坐标
    9 h) E' E7 B& q; T8 I  L- V
  17. stageY : Number //全局Y坐标! |1 g! s) W4 D. r+ p
  18. touchPointID : int //接触点的ID识别码0 U8 ~% M3 `: d# {, N
  19. # q5 r. s% ]: o, J! p
  20. Methods:$ _$ y5 E2 N6 W: n. b
  21. TouchEvent
    ; ^! p; g# W6 t

  22. 3 ~3 P" E" T# [. K+ }. d
  23. AS新增加类包 flash.ui.Multitouch; 多点触摸管理类
    ) O4 F& z2 P* |5 k: w8 f% P
  24. inputMode : String  //触摸事件的处理模式(多点或是手势)
    $ W! O3 W# U$ i) S  R
  25. maxTouchPoints : int  //当前环境所支持同时进行的接触点的最大数量9 u/ B3 [) U9 b5 o9 a
  26. supportedGestures : Vector. //当前环境所支持多接触的类型* v1 S, p- W0 `9 u+ k, F5 O
  27. supportsGestureEvents : Boolean //当前环境是否支持手势
    $ ]0 K1 [6 E* {2 t: A; t
  28. supportsTouchEvents : Boolean //当前环境是否支持基本的触摸
复制代码
 楼主| 发表于 2010-10-22 13:44:46 | 显示全部楼层
1.png

9 [6 H" h2 i: b5 [
Flash多点程序截图
* @. Q; F$ P  X: A

# e* x+ K$ V0 }2 R; y' q- v+ m- ~
9 z2 a& U" v, E' [9 x" s2 k  y源代码
  1. /* @author jimmy
    $ s: T, E, j' S6 p" i' _6 c
  2. * www.jimmy.sh% _0 B6 v4 J& F, _; M" g+ {
  3. */
    5 E, l$ M  I2 f- @9 ?
  4. package' B' |& m& K/ B' h
  5. {
    " m$ C  I7 s8 V( v* m
  6. ( w+ m  t5 e3 A2 M
  7.         import flash.display.DisplayObject;; r' |/ }3 ]0 v3 H9 b4 s3 Y
  8.         import flash.display.Sprite;0 ?% M4 w7 |9 e3 j
  9.         import flash.events.TouchEvent;
    , K  x4 |+ B5 ^" P" S. W! s3 b4 y
  10.         import flash.ui.Multitouch;6 A( N! F  l/ U& }# W- r% s
  11.         import flash.ui.MultitouchInputMode;* T( O$ }7 b- o+ _; A

  12. ' U) M  H: m( H! s- D
  13.         public class main extends Sprite8 k+ R$ L% g- r
  14.         {       
    : l3 H9 p# I. s$ m* K8 |

  15.   h0 o) j0 c5 a" u( O
  16.                 public var s1:Sprite;* L) E0 s9 X' _+ x+ s- r) H9 ?
  17.                 public var s2:Sprite;, R% A; V9 z, S7 X: w) k* e0 h! }
  18.                 public var s3:Sprite;: O% M' R  M* W1 g4 B. r4 P
  19.                 public var s4:Sprite;& s6 [9 A( q7 [5 _& F
  20.                 public var s5:Sprite;
    & Q/ U' }& b" p6 b, F
  21.                 public var s6:Sprite;3 l" G" Z2 E6 @% ?/ \
  22.                 protected var touchMap:Array= [];" c, |! k+ E! \5 C) C6 C2 O
  23.                 protected var touchMc:Array;  x2 r! G# ^7 H" e
  24.                 public function main()% F) i7 N5 A3 ^: B
  25.                 {# a  V) A- y# `
  26.                         touchMc=[s1,s2,s3,s4,s5,s6];
    ) k, i/ d0 h$ _. V, _" {& @! Z
  27.                         //多点触摸类型4 u! X+ F$ @) B1 v% i$ [0 ~- q2 R
  28.                         Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT;
    3 ~: r6 K& g& `& k, o  K& M$ {: ?
  29.                         //添加3个多点触摸事件
    1 R4 [' _2 E' O( w7 J
  30.                         this.addEventListener(TouchEvent.TOUCH_BEGIN,touchBeginHandler);, w3 L1 ]* P! Z
  31.                         this.addEventListener(TouchEvent.TOUCH_END,touchEndHandler);
    6 ~- f6 @0 L6 _5 H. A  S) \
  32.                         this.addEventListener(TouchEvent.TOUCH_MOVE,touchMoveHandler);
    2 m9 C5 Y0 o# p( J. V
  33.                 }$ ~! k/ i+ D; k: c% \& d: b% I
  34.                 //触摸开始事件
    1 E8 I3 J; ]& k/ j4 L! W( W" U( s
  35.                 protected function touchBeginHandler(event:TouchEvent):void
    $ d4 o3 r$ e8 w! f' ^
  36.                 {/ b' I' _& s0 g8 `( C6 K( S8 U% X
  37.                         addChild(DisplayObject(event.target));
    . q/ e! a7 f+ P
  38.                         touchMc.sort(depthFunction);
    ; x4 B1 Q9 `# X6 r% D2 @" Z
  39.                         var touchPoint:Object={};
    * F" B1 |: z$ q  ^' o( h
  40.                         touchMap[event.touchPointID] =touchPoint;
    3 [: S: E2 u( x* \1 G" t) S3 x) g) d+ K' L
  41.                 }
    7 j! e/ L; `9 r" r; c
  42.                 //根据深度排序,为了让判断的时候先判断前面的物体
    * C7 v, N7 D: z
  43.                 protected function depthFunction(a:Sprite,b:Sprite):int
    & u+ _2 o/ l: `6 D+ y2 k0 C
  44.                 {
    $ c; _! j, u& l! W! q' H: [
  45.                         if(getChildIndex(a)>getChildIndex(b))
    9 o% h" `% @% S# i
  46.                                 {
      }2 |' g1 I, v
  47.                                         return -1;
    2 R- e( ]  |% |2 c9 I7 H' \5 P
  48.                                 }else {; \6 {: {5 |9 x. z1 D+ R) z
  49.                                         return 1;
    / s! G/ P; {. I! r- X
  50.                                 }: ?5 _/ z& p' P8 n$ {
  51.                 }
    4 I/ R- l5 v9 P: a& W  Q4 U8 J" ]
  52.                 //触摸事件结束事件- I9 E; q9 V6 P8 b' N
  53.                 protected function touchEndHandler(event:TouchEvent):void
    - J1 M0 Y; f5 w9 H7 M
  54.                 {
    7 F0 S* O7 S. s9 g1 b) Y$ O9 e
  55.                         delete touchMap[event.touchPointID];* a: I6 T# L+ W! M  @0 a
  56.                 }* P: M8 N2 E) S% h6 i/ C0 E; V  `
  57.                 //触摸点移动事件
    " V' c) c: k  Q$ ?; P/ u/ K
  58.                 protected function touchMoveHandler(event:TouchEvent):void
    4 O0 R" J+ O# v3 j
  59.                 {9 }4 o( X- q' }. [  j- P9 `3 z- z7 l
  60.                         var key :int =event.touchPointID;% @4 ?  v6 Y2 ]" y7 ?
  61.                         //判断触摸到那个mc,并让mc跟着手指移动6 A% [% _$ x0 B, X, y& r9 ~
  62.                         if(touchMap[key])  h7 R6 M/ S/ j2 W3 @% g
  63.                         {
    / Y! n# s1 E* B
  64.                                 for(var i:int=0;i<6;i++), L4 P; k: K( y- c- T% K; M4 f8 k$ D
  65.                                 {
    ( F" @* p3 p2 ?' e# P' f9 Z) ?4 M
  66.                                         var _mc:Sprite=touchMc[i];
    / }$ H  ?+ K  B
  67.                                         if(_mc.hitTestPoint( event.stageX,event.stageY))
    5 u& [  s, M$ O9 U4 u. d4 Z: y
  68.                                                 {
    ' i  ?! _* V+ |6 u% K
  69.                                                         _mc.x=event.stageX;
    $ x( M+ e. E; v# \
  70.                                                         _mc.y=event.stageY;
    2 p! r" E; [4 _$ P
  71.                                                         break;
    + j  E% e" o: F; I( D/ W4 a3 i0 A
  72.                                                 };
    9 O' b3 \4 k; X+ u: T  r, ^
  73.                                 }# `6 D; |# Z1 P$ U& S
  74.                         }( ~, e. a: e" U. T
  75.                 }
    8 e9 q* I/ Q" a% i' t
  76.         }. j; h% k1 S+ a4 v
  77. }
复制代码
这里下载Flash源文件
$ ^. w0 K" K3 T: ?! i2 J6 e
/ _1 O( X/ g) L; V9 P. i Multi-touch.zip (231.45 KB, 下载次数: 602)
发表于 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 | 显示全部楼层
回两个帖子就有金币了
& M6 _3 C8 \% z" N% K6 r$ E6 L
" B- }! ~0 c+ W) q! K7 u* 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号
快速回复 返回顶部 返回列表