新聞中心
處理觸摸事件

永和ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
和處理其他事件一樣,可以對舞臺上的元件監(jiān)聽觸摸事件,然后編寫事件處理函數(shù)。觸摸事件有哪些類型?如何使用?它們和鼠標(biāo)事件又有什么區(qū)別?學(xué)完本節(jié)大家便會得到答案。
使用TouchEvent類(1)
所有的觸摸動作都將產(chǎn)生TouchEvent類型的事件對象。TouchEvent類位于flash.events包中,所有的Touch事件類型都被定義為它的靜態(tài)常量,如表3-1所示。
表3-1 TouchEvent類型
在TouchEvent類中,除了父類Event的屬性和方法外,還定義了幾個和觸摸動作相關(guān)的實(shí)例屬性,說明如下。
stageX和stageY:表示對應(yīng)的觸摸點(diǎn)在屏幕上的全局坐標(biāo)。
pressure:取值為0.0~1.0,表示觸摸點(diǎn)處的屏幕壓力。如果設(shè)備不支持這個功能,那么其值將總為1.0。
sizeX和sizeY:分別對應(yīng)觸摸點(diǎn)接觸區(qū)域的寬和高。
touchPointID:觸摸點(diǎn)的唯一標(biāo)識,是整型數(shù)據(jù)。
在處理觸摸事件時,touchPointID是經(jīng)常使用的一個參數(shù),用來標(biāo)識觸摸事件。觸摸操作可能有多個觸摸點(diǎn),比如兩個手指同時觸摸屏幕,TOUCH_BEGIN事件將發(fā)生兩次,產(chǎn)生的TouchEvent分別對應(yīng)不同位置的觸摸點(diǎn)。為了區(qū)分觸摸點(diǎn),AIR運(yùn)行時會為每個觸摸點(diǎn)分配一個唯一的標(biāo)識,即touchPointID。
當(dāng)TOUCH_BEGIN事件第一次發(fā)生時,AIR運(yùn)行時會從0開始分配touchPointID給每個TouchEvent,直到數(shù)目超出了系統(tǒng)所能支持的最大觸摸點(diǎn)數(shù),超出范圍的觸摸事件將被忽略。Android設(shè)備一般只支持兩個觸摸點(diǎn),也就是說TouchEvent對象的touchPointID的值只可能是0或1。每個觸摸動作結(jié)束時,對應(yīng)的touchPointID被回收,供新的觸摸點(diǎn)使用。
下面用一個TouchEventEx的例子演示TOUCH_BEGIN和TOUCH_END的用法。每當(dāng)一個或兩個手指觸摸屏幕時,程序會在觸摸點(diǎn)附近畫一個圓,并開始拖拽這個圓,直到TOUCH_END事件發(fā)生,拖拽結(jié)束。程序的主類Main.as的代碼如下:
- package
- {
- import flash.display.Graphics;
- import flash.display.Sprite;
- import flash.events.TouchEvent;
- import flash.ui.Multitouch;
- import flash.ui.MultitouchInputMode;
- //AppBase是一個基礎(chǔ)類,定義了程序的基本屬性
- public class Main extends AppBase
- {
- override protected function init():void
- {
- //判斷是否支持TouchEvent
- if ( Multitouch.supportsTouchEvents )
- {
- //設(shè)置交互模式為處理觸摸動作
- Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
- //監(jiān)聽舞臺的TOUCH_BEGIN和TOUCH_END事件
- stage.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
- stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
- }
- }
- //創(chuàng)建可視對象,并畫圓
- private function createCircle():Sprite
- {
- var box:Sprite = new Sprite();
- var g:Graphics = box.graphics;
- g.beginFill(0x808888);
- g.drawCircle(0, 0, 30);
- g.endFill();
- return box;
- }
- //TOUCH_BEGIN事件處理函數(shù)
- private function onTouchBegin(e:TouchEvent):void
- {
- //在觸摸點(diǎn)處添加一個圓
- var box:Sprite = createCircle();
- addChild(box);
- //將元件移到觸摸點(diǎn)對應(yīng)的舞臺坐標(biāo)處
- box.x = e.stageX;
- box.y = e.stageY;
- //調(diào)用可視對象的startTouchDrag,開始拖拽元件
- box.startTouchDrag(e.touchPointID);
- }
- //TOUCH_END事件處理函數(shù)
- private function onTouchEnd(e:TouchEvent):void
- {
- //調(diào)用stopTouchDrag結(jié)束拖拽
- e.target.stopTouchDrag(e.touchPointID);
- }
- }
- }
當(dāng)前題目:AIR Android:使用TouchEvent類(1)
文章轉(zhuǎn)載:http://m.5511xx.com/article/copogje.html


咨詢
建站咨詢
