偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

AIR Android:使用TouchEvent類(1)

移動開發(fā) Android
處理用戶交互,本模塊主要介紹了多點觸摸相關功能的用法,包括觸摸和手勢。處理用戶交互是AIR Android開發(fā)的基礎部分,只有設計合理、用戶操作符合邏輯的交互,才能增強程序的用戶體驗。因此,熟練掌握常見的交互手法至關重要。本文為大家介紹使用TouchEvent類。

處理觸摸事件

和處理其他事件一樣,可以對舞臺上的元件監(jiān)聽觸摸事件,然后編寫事件處理函數(shù)。觸摸事件有哪些類型?如何使用?它們和鼠標事件又有什么區(qū)別?學完本節(jié)大家便會得到答案。

使用TouchEvent類(1)

所有的觸摸動作都將產(chǎn)生TouchEvent類型的事件對象。TouchEvent類位于flash.events包中,所有的Touch事件類型都被定義為它的靜態(tài)常量,如表3-1所示。

表3-1 TouchEvent類型

 

在TouchEvent類中,除了父類Event的屬性和方法外,還定義了幾個和觸摸動作相關的實例屬性,說明如下。

stageX和stageY:表示對應的觸摸點在屏幕上的全局坐標。

pressure:取值為0.0~1.0,表示觸摸點處的屏幕壓力。如果設備不支持這個功能,那么其值將總為1.0。

sizeX和sizeY:分別對應觸摸點接觸區(qū)域的寬和高。

touchPointID:觸摸點的唯一標識,是整型數(shù)據(jù)。

在處理觸摸事件時,touchPointID是經(jīng)常使用的一個參數(shù),用來標識觸摸事件。觸摸操作可能有多個觸摸點,比如兩個手指同時觸摸屏幕,TOUCH_BEGIN事件將發(fā)生兩次,產(chǎn)生的TouchEvent分別對應不同位置的觸摸點。為了區(qū)分觸摸點,AIR運行時會為每個觸摸點分配一個唯一的標識,即touchPointID。

當TOUCH_BEGIN事件第一次發(fā)生時,AIR運行時會從0開始分配touchPointID給每個TouchEvent,直到數(shù)目超出了系統(tǒng)所能支持的最大觸摸點數(shù),超出范圍的觸摸事件將被忽略。Android設備一般只支持兩個觸摸點,也就是說TouchEvent對象的touchPointID的值只可能是0或1。每個觸摸動作結束時,對應的touchPointID被回收,供新的觸摸點使用。

下面用一個TouchEventEx的例子演示TOUCH_BEGIN和TOUCH_END的用法。每當一個或兩個手指觸摸屏幕時,程序會在觸摸點附近畫一個圓,并開始拖拽這個圓,直到TOUCH_END事件發(fā)生,拖拽結束。程序的主類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.     //監(jiān)聽舞臺的TOUCH_BEGIN和TOUCH_END事件  
  19.     stage.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);  
  20.     stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);  
  21.    }     
  22.   }  
  23.   //創(chuàng)建可視對象,并畫圓  
  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事件處理函數(shù)  
  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.    //調(diào)用可視對象的startTouchDrag,開始拖拽元件  
  43.    box.startTouchDrag(e.touchPointID);  
  44.   }  
  45.   //TOUCH_END事件處理函數(shù)  
  46.   private function onTouchEnd(e:TouchEvent):void  
  47.   {  
  48.    //調(diào)用stopTouchDrag結束拖拽  
  49.    e.target.stopTouchDrag(e.touchPointID);  
  50.   }    
  51.  }   
  52. }
責任編輯:閆佳明 來源: book.51cto.com
相關推薦

2013-05-14 11:04:58

AIR AndroidTouchEvent類

2013-05-14 10:13:52

Android開發(fā)主類Main

2013-05-14 10:16:35

Android開發(fā)主類Main

2013-05-14 09:50:44

Android開發(fā)Flash Build

2013-05-14 10:23:31

Android開發(fā)主類Main

2013-05-09 13:45:47

2013-05-03 15:17:59

Android開發(fā)Android SDK

2013-05-14 11:18:24

AIR AndroidSwipe手勢

2011-06-16 10:25:29

AndroidAIR

2013-05-14 10:41:31

2013-05-14 09:57:37

2013-05-14 10:27:46

Android開發(fā)設置程序屬性

2013-05-14 11:16:26

AIR Android旋轉手勢

2013-05-14 10:39:27

AIR Android打包APK文件

2013-05-14 10:37:10

AIR Android設置訪問權限

2013-05-14 10:56:45

AIR Android多點觸摸

2011-11-17 17:04:43

AdobeAIRAndroid

2013-05-14 10:05:10

Android開發(fā)游戲設計

2013-05-14 10:10:28

Android開發(fā)棋子類Grid

2013-03-28 14:53:54

touchEvent消
點贊
收藏

51CTO技術棧公眾號