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

触摸屏与OLED论坛

 找回密码
 注册论坛
查看: 36223|回复: 233

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

    [复制链接]
发表于 2010-10-22 13:41:55 | 显示全部楼层 |阅读模式
iPhone刚出来的时候最让我惊喜的莫过于多点触摸(Multi-touch)和手势,酷的一塌糊涂。超多游戏好应用使用了多点触摸技术,废话不多,来看看在Flash cs5中如何实现多点触摸。$ W3 a7 [; N8 `' H+ ^6 x7 |$ c
" u6 m2 W9 d9 n1 j2 q) K* _; E
这些在Flash cs5中都可以轻松实现。
  1. AS新增加类包  flash.events.TouchEvent; 多点触摸事件
    ; \+ e. K# d, E2 I4 W$ ^
  2. Property:
    3 u" H3 @' M5 Q( ~: i7 K* t2 |
  3. altKey : Boolean //设置Alt键激活与否
    - [  f  L  o, R1 ^
  4. commandKey : Boolean //设置Command键激活与否
    - u. y0 B1 x) D
  5. controlKey : Boolean //设置Control键激活与否1 z3 }% V  R# {9 i  _% i
  6. ctrlKey : Boolean //设置Ctrl键激活与否8 {* z4 p( E4 Q2 L0 m! I4 `% ^, R
  7. isPrimaryTouchPoint : Boolean //接触的第一个点是否被看成鼠标事件
    4 {7 m' m% ~  P1 O# l
  8. isRelatedObjectInaccessible : Boolean //安全设置
    # n+ H# `+ L+ S4 y2 ~, B6 a, r0 j& u
  9. localX : Number  //相对x坐标% R; r  F" a) D7 L) e8 y
  10. localY : Number  //相对y坐标, n) [" I$ |+ C) I1 e5 ^
  11. pressure : Number //于设备接触的压力
      k% X+ M; @: b7 \* Y
  12. relatedObject : InteractiveObject// 显示相关的Object+ {( g1 R" N4 y+ Y9 z
  13. shiftKey : Boolean// 设置ShiftKey键激活与否
    # q' f/ E$ |0 D4 {# B9 r2 z9 F
  14. sizeX : Number// 触摸时的宽度9 e" N- ~/ p7 G6 N
  15. sizeY : Number //触摸时高度
    5 K7 g3 A; S2 r2 E
  16. stageX : Number //全局X坐标
    & n7 ]1 O2 W0 U; T) c  \5 r
  17. stageY : Number //全局Y坐标
    % ?$ X' D" S- V8 z9 ]
  18. touchPointID : int //接触点的ID识别码) `$ m9 j" f: @. @/ m% W

  19. 8 I& f% g9 z4 E( b
  20. Methods:2 I& n& S% f/ M7 D
  21. TouchEvent
    % |: Z" j# O+ y, J- p
  22. # L% \4 ^6 H" `
  23. AS新增加类包 flash.ui.Multitouch; 多点触摸管理类# F4 ^" Y; f. l
  24. inputMode : String  //触摸事件的处理模式(多点或是手势), H: t3 ?" c- e/ S% X
  25. maxTouchPoints : int  //当前环境所支持同时进行的接触点的最大数量
    2 O4 b+ v% C) w0 T/ i
  26. supportedGestures : Vector. //当前环境所支持多接触的类型9 R; I7 {& e/ O& ^) O3 U8 A' u
  27. supportsGestureEvents : Boolean //当前环境是否支持手势. @3 N- i# l- M; k
  28. supportsTouchEvents : Boolean //当前环境是否支持基本的触摸
复制代码
 楼主| 发表于 2010-10-22 13:44:46 | 显示全部楼层
1.png

" s4 C9 i( u7 U8 O" f1 u: A8 d
Flash多点程序截图

/ h' D5 u: X& H2 Q9 X
$ l7 f, g% j7 v# }# f6 ?
5 y3 m& L: g! b: [6 l6 }0 M! ^源代码
  1. /* @author jimmy
    % B! M2 w" x5 f: J
  2. * www.jimmy.sh
    1 T- a7 V/ n/ s. ]# w- ^
  3. */4 v& J# ]; m% p' k2 M9 J
  4. package
    7 d* l4 c$ j% f& S
  5. {
    6 q) ^1 s  L; Y0 y1 a4 G3 i& z# X3 N

  6. ) Y$ [) m/ @; N; R
  7.         import flash.display.DisplayObject;0 M' i% t& Q$ v' g
  8.         import flash.display.Sprite;
    3 g% m9 m3 s& q- P9 d
  9.         import flash.events.TouchEvent;
    , ?" l# F3 e: C: r
  10.         import flash.ui.Multitouch;7 o" l0 P9 r7 T" C, Z! ]: G( a
  11.         import flash.ui.MultitouchInputMode;7 G0 Z$ n3 I& j9 b' _, R7 ^

  12. . {* t  z; p' b  r( @2 n; u
  13.         public class main extends Sprite- o8 W* I. j: A1 ]
  14.         {       
    $ a7 N1 ?% ]2 u; g5 P

  15. 3 M2 s8 \; }4 i
  16.                 public var s1:Sprite;3 F! R+ E7 j* [1 m
  17.                 public var s2:Sprite;
      X( E. S5 n' T; v: d( G3 D# G2 ^
  18.                 public var s3:Sprite;
    ) Q! d9 T0 S2 n+ h& W9 n% ?( V
  19.                 public var s4:Sprite;
    4 d. o1 P& q2 v* j+ y0 Q
  20.                 public var s5:Sprite;
    " `1 l7 H8 S; e) Y8 m8 Q8 Y" y
  21.                 public var s6:Sprite;% l& D; Q3 w* s5 j) e
  22.                 protected var touchMap:Array= [];6 `( b# \3 [1 M8 u
  23.                 protected var touchMc:Array;& J1 @- t( t- p" v
  24.                 public function main()0 p2 v3 h# T2 R9 `) C# J, _( b! j2 {
  25.                 {# W. U9 b, r0 f/ O$ s' E8 Z
  26.                         touchMc=[s1,s2,s3,s4,s5,s6];
    5 j7 H% F+ K" h# o' z
  27.                         //多点触摸类型( F- l! D. V* V- V, e
  28.                         Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT;1 }/ s, j' W2 B9 @
  29.                         //添加3个多点触摸事件
    & y# O9 v! z- A2 P
  30.                         this.addEventListener(TouchEvent.TOUCH_BEGIN,touchBeginHandler);# H: s6 W9 W+ N3 [4 D' z& l' R
  31.                         this.addEventListener(TouchEvent.TOUCH_END,touchEndHandler);$ g* t- q2 ~& |  |' t, x6 z0 [
  32.                         this.addEventListener(TouchEvent.TOUCH_MOVE,touchMoveHandler);
    1 O) b4 C) V9 E! `; C/ I# y) @
  33.                 }  y4 T% Y5 C. x- K5 K2 t
  34.                 //触摸开始事件* D5 N* K1 A9 d; h) e* U
  35.                 protected function touchBeginHandler(event:TouchEvent):void3 b5 g* b& l# T* |
  36.                 {0 D  Y' W- |% S6 I1 I% e
  37.                         addChild(DisplayObject(event.target));
    + N/ V) P" y2 @. M5 y9 Y
  38.                         touchMc.sort(depthFunction);
    0 X$ s! F$ T" `' t4 Q6 g4 X
  39.                         var touchPoint:Object={};7 ~' H, r$ R2 y
  40.                         touchMap[event.touchPointID] =touchPoint;1 ], O# C) Q$ r8 x- l% m
  41.                 }
    . R: C! O0 T! B) {
  42.                 //根据深度排序,为了让判断的时候先判断前面的物体6 W8 c3 x9 n2 k; p- \$ N' ~8 ]
  43.                 protected function depthFunction(a:Sprite,b:Sprite):int
    4 f( u, }7 A2 j# s0 q1 c) }  K" c$ _: u
  44.                 {
    , ?- s6 D9 N- `! ]4 p
  45.                         if(getChildIndex(a)>getChildIndex(b))( ]' J" R; W. A1 X
  46.                                 {  p: l1 t" N( n$ j
  47.                                         return -1;: Q) u* `% B$ i( w! {7 n
  48.                                 }else {& q4 ], {- s5 C/ j$ x; b
  49.                                         return 1;6 O# d1 B! m; S, M" s5 Y$ i
  50.                                 }' [, |9 X! g5 _5 U3 |
  51.                 }$ ]8 h% h& X2 ^  A2 w
  52.                 //触摸事件结束事件
    " G3 {9 a( u+ H/ i
  53.                 protected function touchEndHandler(event:TouchEvent):void1 }# I+ e* u, p  E- C' j( V
  54.                 {( }+ w9 t4 i8 M; n6 V' f: D, z
  55.                         delete touchMap[event.touchPointID];
    ) G& k; R) T, J1 b1 J
  56.                 }
    0 [6 k+ E" g) p% h% y4 h7 w
  57.                 //触摸点移动事件
    0 g5 Z4 e: ]% H! N% q
  58.                 protected function touchMoveHandler(event:TouchEvent):void
    ! r* }, J# N( f/ I
  59.                 {$ O$ y% r8 x+ w7 d# F/ ^1 R- [
  60.                         var key :int =event.touchPointID;
    8 B  g7 ^4 s. ~! \+ |3 N
  61.                         //判断触摸到那个mc,并让mc跟着手指移动
    . ]8 y; x* x+ M  C% G
  62.                         if(touchMap[key])/ U7 Q1 r( h9 d7 `
  63.                         {& \( K0 G5 f. |  J; |# _- T
  64.                                 for(var i:int=0;i<6;i++)* b. ?: @) g* i! U  e
  65.                                 {" J% h4 V9 F# Y
  66.                                         var _mc:Sprite=touchMc[i];- n! j; M* ]% x2 g' ~
  67.                                         if(_mc.hitTestPoint( event.stageX,event.stageY))
    ( F8 O# s% [$ _1 ~6 }) U
  68.                                                 {
    5 b% f0 y! b. d# L3 H# R9 r
  69.                                                         _mc.x=event.stageX;; M. Q$ J; l5 W" T* U1 [
  70.                                                         _mc.y=event.stageY;
    ! y& d  {; d( j3 ~; ?2 r
  71.                                                         break;; v( P! l& n5 C3 N% H/ v8 Q) V" H
  72.                                                 };
    - ], X! w0 _% p  d
  73.                                 }
    ) ?" o: K; u/ y7 p) l  _2 D1 }
  74.                         }3 h, _( G' s4 S
  75.                 }
    ; D1 U, u# h9 ?9 m+ l* j7 j
  76.         }/ i: g  c" h2 j& t. P2 y
  77. }
复制代码
这里下载Flash源文件
/ f! Y5 m0 b- I* S1 ^4 @3 _2 n( c7 M2 [; R" r( [! N
Multi-touch.zip (231.45 KB, 下载次数: 607)
发表于 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 | 显示全部楼层
回两个帖子就有金币了/ b( K8 y: U) H0 T( ?9 v( _/ f4 Z( t# B
& q+ r) V$ X! g  U) j' J
然后就可以下载了
发表于 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号
快速回复 返回顶部 返回列表