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 |
源代码
/* @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; }; } } } } }
回复Comments
作者:
{commentrecontent}