as3-多点触摸参考

2013-3-14 雨辰 AS3

包 flash.events  
类 public class TouchEvent  
继承 TouchEvent  Event  Object 
语言版本:  ActionScript 3.0 
运行时版本:  Flash Player 10.1, AIR 2, Flash Lite 4 
使用 TouchEvent 类,您可以处理设备上那些检测用户与设备之间的接触(例如触摸屏上的手指)的事件。当用户与带有触摸屏的移动电话或绘图板等设备交互时,用户通常使用手指或指针设备接触屏幕。可使用 TouchEvent 类开发响应基本触摸事件(如单个手指点击)的应用程序。使用此类中定义的事件类型创建事件侦听器。对于具有接个接触点的用户交互(例如在触摸屏上同时移动多根手指),请使用相关的 GestureEvent 类、PressAndTapGestureEvent 类和 TransformGestureEvent 类。并使用这些类的属性和方法来构造响应用户触摸设备的事件处理程序。  
使用 Multitouch 类确定当前环境的触摸交互支持,如果当前环境支持触摸交互,则对其进行管理。 
  
注意:当对象嵌套在显示列表中时,触摸事件的目标将是显示列表中可见的最深的可能嵌套对象。此对象称为目标节点。要使目标节点的祖先(包含显示列表中目标节点的对象)接收触摸事件的通知,请对祖先节点使用 EventDispatcher.addEventListener() 并将 type 参数设置为要检测的特定触摸事件。 
  
-------------------------------------------------------------------------------------------- 
  
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 //当前环境是否支持基本的触摸 
  
************************************************************************************************* 
  
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; 
  
      }; 
  
    } 
  
   } 
  
  } 
  
 } 
  
}

标签: 3d AS3 -Flash

发表评论:

雨辰 joyimp|@2011-2018 京ICP备16030765号