掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
使用TouchEvent類(lèi)(2)

成都創(chuàng)新互聯(lián)堅(jiān)信:善待客戶(hù),將會(huì)成為終身客戶(hù)。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?lài)。我們從不忽悠初訪(fǎng)客戶(hù),我們用心做好本職工作,不忘初心,方得始終。10多年網(wǎng)站建設(shè)經(jīng)驗(yàn)成都創(chuàng)新互聯(lián)是成都老牌網(wǎng)站營(yíng)銷(xiāo)服務(wù)商,為您提供成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、成都h5網(wǎng)站建設(shè)、網(wǎng)站制作、高端網(wǎng)站設(shè)計(jì)、重慶小程序開(kāi)發(fā)服務(wù),給眾多知名企業(yè)提供過(guò)好品質(zhì)的建站服務(wù)。
由于有監(jiān)聽(tīng)舞臺(tái)stage的Touch事件,因此只要觸摸屏幕上任何一點(diǎn),Touch事件都將觸發(fā),并在觸摸點(diǎn)處畫(huà)一個(gè)圓。請(qǐng)注意,拖拽的實(shí)現(xiàn)并沒(méi)有使用Flash開(kāi)發(fā)者熟悉的startDrag方法,而是Sprite類(lèi)新增的startTouchDrag方法,該方法代碼如下:
- startTouchDrag(touchPointID:int, lockCenter:Boolean = false,
- bounds:Rectangle = null):void
和startDrag相比,***的區(qū)別是多了一個(gè)參數(shù)touchPointID,而touchPointID只在支持觸摸行為的設(shè)備上工作,因此startTouchDrag也只能在觸摸設(shè)備上使用。相對(duì)應(yīng)的,結(jié)束拖拽時(shí)使用stopTouchDrag方法,代碼如下:
- stopTouchDrag(touchPointID:int):void
在結(jié)束拖拽時(shí)也必須輸入touchPointID,以保證是針對(duì)同一個(gè)觸摸點(diǎn)的動(dòng)作。
因?yàn)槟M器不支持觸摸事件,所以使用觸摸事件的程序必須在真機(jī)上運(yùn)行才能看到效果,如圖3-1所示。
運(yùn)行TouchEventEx程序,有兩個(gè)手指觸摸屏幕上任意兩處,保持觸摸并移動(dòng)手指,兩個(gè)圓將跟隨手指移動(dòng)。在本例中,程序主類(lèi)繼承了AppBase,并重寫(xiě)了init方法,實(shí)際上,這將是后面所有實(shí)例代碼的模板。在A(yíng)ppBase類(lèi)中定義了所有程序通用的屬性以及結(jié)構(gòu),完整代碼如下:
- package
- {
- import flash.display.Sprite;
- import flash.display.StageAlign;
- import flash.display.StageScaleMode;
- import flash.events.Event;
- /**
- * 程序基類(lèi),定義了舞臺(tái)屬性
- */
- public class AppBase extends Sprite
- {
- public function AppBase():void
- {
- //定義舞臺(tái)的對(duì)齊方式和縮放模式
- stage.align = StageAlign.TOP_LEFT;
- stage.scaleMode = StageScaleMode.NO_SCALE;
- init();
- }
- /**
- * 程序入口,所有程序都重寫(xiě)init方法,在此添加自己的邏輯
- */
- protected function init():void
- {
- //在這里添加代碼
- }
- }
- }
| 圖3-1 在真機(jī)上的運(yùn)行效果 |
AppBase類(lèi)位于公用代碼庫(kù)library中,定義了舞臺(tái)的對(duì)齊方式和縮放模式。將scaleMode設(shè)置為StageScaleMode.NO_SCALE,舞臺(tái)尺寸即為屏幕的實(shí)際尺寸。StageAlign.TOP_LEFT表示舞臺(tái)內(nèi)容頂部居左對(duì)齊,這兩行代碼的作用是為了讓程序能夠適應(yīng)設(shè)備的屏幕尺寸,從而依據(jù)舞臺(tái)對(duì)象的stageWidth和stageHeight對(duì)界面上的元素進(jìn)行布局和定位。比如在上一章中,我們讓棋盤(pán)在屏幕居中顯示的代碼為:
- grid_container.x = (stage.stageWidth - grid_container.width) / 2;
類(lèi)AppBase為后面所有的例子程序定義了統(tǒng)一的運(yùn)行流程,將init方法作為程序初始化的入口,每個(gè)例子程序的主類(lèi)會(huì)繼承AppBase類(lèi),并且重寫(xiě)init方法。
使用這樣方式后,一些常用的代碼塊被提取出來(lái)放在基類(lèi)中,被所有的子類(lèi)共用,同時(shí)也提高了程序的靈活性。在后續(xù)的開(kāi)發(fā)中,如果有需要,可以在A(yíng)ppBase基類(lèi)中加入更多的方法,這樣所有的程序都可以共享。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流