AIR Android:使用TouchEvent类(1)

处理触摸事件

永和ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

和处理其他事件一样,可以对舞台上的元件监听触摸事件,然后编写事件处理函数。触摸事件有哪些类型?如何使用?它们和鼠标事件又有什么区别?学完本节大家便会得到答案。

使用TouchEvent类(1)

所有的触摸动作都将产生TouchEvent类型的事件对象。TouchEvent类位于flash.events包中,所有的Touch事件类型都被定义为它的静态常量,如表3-1所示。

表3-1 TouchEvent类型

 

在TouchEvent类中,除了父类Event的属性和方法外,还定义了几个和触摸动作相关的实例属性,说明如下。

stageX和stageY:表示对应的触摸点在屏幕上的全局坐标。

pressure:取值为0.0~1.0,表示触摸点处的屏幕压力。如果设备不支持这个功能,那么其值将总为1.0。

sizeX和sizeY:分别对应触摸点接触区域的宽和高。

touchPointID:触摸点的唯一标识,是整型数据。

在处理触摸事件时,touchPointID是经常使用的一个参数,用来标识触摸事件。触摸操作可能有多个触摸点,比如两个手指同时触摸屏幕,TOUCH_BEGIN事件将发生两次,产生的TouchEvent分别对应不同位置的触摸点。为了区分触摸点,AIR运行时会为每个触摸点分配一个唯一的标识,即touchPointID。

当TOUCH_BEGIN事件第一次发生时,AIR运行时会从0开始分配touchPointID给每个TouchEvent,直到数目超出了系统所能支持的最大触摸点数,超出范围的触摸事件将被忽略。Android设备一般只支持两个触摸点,也就是说TouchEvent对象的touchPointID的值只可能是0或1。每个触摸动作结束时,对应的touchPointID被回收,供新的触摸点使用。

下面用一个TouchEventEx的例子演示TOUCH_BEGIN和TOUCH_END的用法。每当一个或两个手指触摸屏幕时,程序会在触摸点附近画一个圆,并开始拖拽这个圆,直到TOUCH_END事件发生,拖拽结束。程序的主类Main.as的代码如下:

 
 
 
 
  1. package  
  2. {  
  3.  import flash.display.Graphics;  
  4.  import flash.display.Sprite;  
  5.  import flash.events.TouchEvent;  
  6.  import flash.ui.Multitouch;  
  7.  import flash.ui.MultitouchInputMode;  
  8.  //AppBase是一个基础类,定义了程序的基本属性  
  9.  public class Main extends AppBase  
  10.  {    
  11.   override protected function init():void  
  12.   {  
  13.    //判断是否支持TouchEvent  
  14.    if ( Multitouch.supportsTouchEvents )  
  15.    {  
  16.     //设置交互模式为处理触摸动作  
  17.     Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;  
  18.     //监听舞台的TOUCH_BEGIN和TOUCH_END事件  
  19.     stage.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);  
  20.     stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);  
  21.    }     
  22.   }  
  23.   //创建可视对象,并画圆  
  24.   private function createCircle():Sprite  
  25.   {  
  26.    var box:Sprite = new Sprite();  
  27.    var g:Graphics = box.graphics;  
  28.    g.beginFill(0x808888);  
  29.    g.drawCircle(0, 0, 30);  
  30.    g.endFill();  
  31.    return box;  
  32.   }    
  33.   //TOUCH_BEGIN事件处理函数  
  34.   private function onTouchBegin(e:TouchEvent):void  
  35.   {  
  36.    //在触摸点处添加一个圆  
  37.    var box:Sprite = createCircle();  
  38.    addChild(box);  
  39.    //将元件移到触摸点对应的舞台坐标处  
  40.    box.x = e.stageX;  
  41.    box.y = e.stageY;     
  42.    //调用可视对象的startTouchDrag,开始拖拽元件  
  43.    box.startTouchDrag(e.touchPointID);  
  44.   }  
  45.   //TOUCH_END事件处理函数  
  46.   private function onTouchEnd(e:TouchEvent):void  
  47.   {  
  48.    //调用stopTouchDrag结束拖拽  
  49.    e.target.stopTouchDrag(e.touchPointID);  
  50.   }    
  51.  }   
  52. }

网页标题:AIR Android:使用TouchEvent类(1)
文章分享:http://www.shufengxianlan.com/qtweb/news49/483249.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联