iPhone刚出来的时候最让我惊喜的莫过于多点触摸(Multi-touch)和手势,酷的一塌糊涂。超多游戏好应用使用了多点触摸技术,废话不多,来看看在Flash cs5中如何实现多点触摸。

这些在Flash cs5中都可以轻松实现。

AS新增加类包  flash.events.TouchEvent; 多点触摸事件
Property:
altKey : Boolean //设置Alt键激活与否
commandKey : Boolean //设置Command键激活与否
controlKey : Boolean //设置Control键激活与否
ctrlKey : Boolean //设置Ctrl键激活与否
isPrimaryTouchPoint : Boolean //接触的第一个点是否被看成鼠标事件
isRelatedObjectInaccessible : Boolean //安全设置
localX : Number  //相对x坐标
localY : Number  //相对y坐标
pressure : Number //于设备接触的压力
relatedObject : InteractiveObject// 显示相关的Object
shiftKey : Boolean// 设置ShiftKey键激活与否
sizeX : Number// 触摸时的宽度
sizeY : Number //触摸时高度
stageX : Number //全局X坐标
stageY : Number //全局Y坐标
touchPointID : int //接触点的ID识别码
 
Methods:
TouchEvent
 
AS新增加类包 flash.ui.Multitouch; 多点触摸管理类
inputMode : String  //触摸事件的处理模式(多点或是手势)
maxTouchPoints : int  //当前环境所支持同时进行的接触点的最大数量
supportedGestures : Vector. //当前环境所支持多接触的类型
supportsGestureEvents : Boolean //当前环境是否支持手势
supportsTouchEvents : Boolean //当前环境是否支持基本的触摸
实例下载 原文件 ipa
多点触摸 Multi-touch

Multi-touch-test.ipa

IMG_0350

截图

源代码

/* @author jimmy
* www.jimmy.sh
*/
package {   import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.TouchEvent; import flash.ui.Multitouch; import flash.ui.MultitouchInputMode;   public class main extends Sprite {   public var s1:Sprite; public var s2:Sprite; public var s3:Sprite; public var s4:Sprite; public var s5:Sprite; public var s6:Sprite; protected var touchMap:Array= []; protected var touchMc:Array; public function main() { touchMc=[s1,s2,s3,s4,s5,s6]; //多点触摸类型 Multitouch.inputMode=MultitouchInputMode.TOUCH_POINT; //添加3个多点触摸事件 this.addEventListener(TouchEvent.TOUCH_BEGIN,touchBeginHandler); this.addEventListener(TouchEvent.TOUCH_END,touchEndHandler); this.addEventListener(TouchEvent.TOUCH_MOVE,touchMoveHandler); } //触摸开始事件 protected function touchBeginHandler(event:TouchEvent):void { addChild(DisplayObject(event.target)); touchMc.sort(depthFunction); var touchPoint:Object={}; touchMap[event.touchPointID] =touchPoint; } //根据深度排序,为了让判断的时候先判断前面的物体 protected function depthFunction(a:Sprite,b:Sprite):int { if(getChildIndex(a)>getChildIndex(b)) { return -1; }else { return 1; } } //触摸事件结束事件 protected function touchEndHandler(event:TouchEvent):void { delete touchMap[event.touchPointID]; } //触摸点移动事件 protected function touchMoveHandler(event:TouchEvent):void { var key :int =event.touchPointID; //判断触摸到那个mc,并让mc跟着手指移动 if(touchMap[key]) { for(var i:int=0;i<6;i++) { var _mc:Sprite=touchMc[i]; if(_mc.hitTestPoint( event.stageX,event.stageY)) { _mc.x=event.stageX; _mc.y=event.stageY; break; }; } } } } }