Flash AS3.0動(dòng)畫程序設(shè)計(jì)案例教程課件第4章_第1頁
Flash AS3.0動(dòng)畫程序設(shè)計(jì)案例教程課件第4章_第2頁
Flash AS3.0動(dòng)畫程序設(shè)計(jì)案例教程課件第4章_第3頁
Flash AS3.0動(dòng)畫程序設(shè)計(jì)案例教程課件第4章_第4頁
Flash AS3.0動(dòng)畫程序設(shè)計(jì)案例教程課件第4章_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4章 事件偵聽及用戶交互FlashAS3.0事件和事件偵聽Event類系統(tǒng)內(nèi)置事件定時(shí)器事件及響應(yīng)鼠標(biāo)事件及響應(yīng)鍵盤事件及響應(yīng)4.1事件及事件偵聽4.1.1事件事件就是發(fā)生的ActionScript能夠識(shí)別并可響應(yīng)的事情。許多事件與用戶交互相關(guān)聯(lián),諸如用戶單擊某個(gè)按鈕或按鍵盤上的某個(gè)鍵之類。還有其他類型的事件。例如,使用ActionScript加載外部圖像,有一個(gè)事件可以知道圖像何時(shí)加載完畢。當(dāng)ActionScript程序運(yùn)行時(shí),從概念上講,它只是坐等某些事情發(fā)生。事情發(fā)生時(shí),為這些事件指定的ActionScript代碼將運(yùn)行。4.1.2事件處理過程用于指定為響應(yīng)特定事件而執(zhí)行的特定操作的技術(shù)稱為事件處理。在編寫執(zhí)行事件處理的ActionScript代碼時(shí),需要識(shí)別三個(gè)重要元素:事件源:發(fā)生該事件的是哪個(gè)對(duì)象?例如,單擊了哪個(gè)按鈕?事件源也稱為事件目標(biāo)。事件:將要發(fā)生什么事情,識(shí)別特定事件非常重要,因?yàn)樵S多對(duì)象都會(huì)觸發(fā)多個(gè)事件。響應(yīng):當(dāng)事件發(fā)生時(shí),希望執(zhí)行哪些步驟?functioneventResponse(eventObject:EventType):void{//Actionsperformedinresponsetotheeventgohere.}eventSource.addEventListener(EventType.EVENT_NAME,eventResponse);

4.1.3事件對(duì)象

FlashPlayerAPI定義了一個(gè)Event類,作為所有事件對(duì)象的基類。Event類定義一組基本的適用于所有事件對(duì)象的屬性和方法。

(一)Event類屬性

Event類定義許多只讀屬性和常數(shù),以提供有關(guān)事件對(duì)象的重要信息。以下內(nèi)容尤其重要:事件對(duì)象類型由常數(shù)表示,并存儲(chǔ)在Event.type屬性中。事件的默認(rèn)行為是否可以被阻止由布爾值表示,并存儲(chǔ)在Event.cancelable屬性中。事件流信息包含在其余屬性中。(二)Event類方法共有三種類別的Event類方法:實(shí)用程序方法:可以創(chuàng)建事件對(duì)象的副本或?qū)⑵滢D(zhuǎn)換為字符串。事件流方法:用于從事件流中刪除事件對(duì)象。默認(rèn)行為方法:可阻止默認(rèn)行為或檢查是否已阻止默認(rèn)行為。(三)Event類的子類每個(gè)子類提供了對(duì)于該事件類別來說唯一的附加屬性和事件類型。例如,與鼠標(biāo)輸入相關(guān)的事件具有若干獨(dú)特的特性,無法被Event類中定義的屬性捕獲。MouseEvent類添加了10個(gè)屬性,擴(kuò)展了Event類。

Event子類還包含代表與子類關(guān)聯(lián)的事件類型的常量。例如,MouseEvent類定義幾種鼠標(biāo)事件類型的內(nèi)容,包括click、doubleClick、mouseDown和mouseUp事件類型。4.1.4事件偵聽事件處理函數(shù)也稱為事件偵聽器,是FlashPlayer為響應(yīng)特定事件而執(zhí)行的函數(shù)。添加事件偵聽器的過程分為兩步。首先,為FlashPlayer創(chuàng)建一個(gè)為響應(yīng)事件而執(zhí)行的函數(shù)或類方法。這有時(shí)稱為偵聽器函數(shù)或事件處理函數(shù)。然后,使用addEventListener()方法,在事件的目標(biāo)或位于適當(dāng)事件流上的任何顯示列表對(duì)象中注冊(cè)偵聽器函數(shù)。(1)添加事件偵聽器addEventListener()方法是IEventDispatcher接口的主要函數(shù)。

(2)刪除事件偵聽器可以使用removeEventListener()方法刪除不再需要的事件偵聽器。

(3)調(diào)度事件可以使用dispatchEvent()方法將自定義事件對(duì)象調(diào)度到事件流。

4.2常用內(nèi)置事件類常用內(nèi)置事件類則包括鼠標(biāo)事件類、鍵盤事件類、Timer類及事件、TextField類

4.2.1Timer類及相關(guān)事件4.2.2TextField類及相關(guān)事件4.2.3ENTER_FRAME事件

ENTER_FRAME事件,也稱進(jìn)入幀事件,在時(shí)間軸播放剛剛進(jìn)入一個(gè)新的幀的時(shí)候觸發(fā)。如果時(shí)間軸只有一幀,這個(gè)事件將會(huì)以幀速度不斷被觸發(fā)。任何可視對(duì)象都可以接收這個(gè)事件。創(chuàng)建腳本動(dòng)畫的大多數(shù)開發(fā)人員都使用ENTER_FRAME事件作為一種方法來創(chuàng)建隨時(shí)間重復(fù)的動(dòng)作??梢跃帉懘a以偵聽ENTER_FRAME事件,每一幀都讓動(dòng)畫球移動(dòng)一定的量,當(dāng)屏幕更新時(shí)(每一幀),將會(huì)在新位置重新繪制該球,從而產(chǎn)生了運(yùn)動(dòng)。屬性含義currentCount計(jì)時(shí)器當(dāng)前的計(jì)時(shí)次數(shù)Delay計(jì)時(shí)器的延時(shí)長(zhǎng)度(時(shí)間間隔),單位毫秒repeatCount被設(shè)置的重復(fù)運(yùn)行的次數(shù)Running當(dāng)前運(yùn)行狀態(tài)與否方法含義Timer()創(chuàng)建計(jì)時(shí)器對(duì)象Reset()計(jì)時(shí)器復(fù)位,currentCount屬性被恢復(fù)為0Start()計(jì)時(shí)器開始計(jì)時(shí)Stop()計(jì)時(shí)器停止計(jì)時(shí)事件摘要change在修改控件值后調(diào)度,與textInput事件不同是在修改值之前調(diào)度。link當(dāng)用戶單擊支持HTML的文本字段中的超鏈接(其中的URL以“event:”開頭)時(shí)調(diào)度。scroll用戶滾動(dòng)后由TextField對(duì)象調(diào)度。textInput用戶輸入一個(gè)或多個(gè)文本字符時(shí),F(xiàn)lashPlayer將調(diào)度該事件。textInteractionModeChange當(dāng)用戶更改文本字段交互模式時(shí),F(xiàn)lashPlayer會(huì)調(diào)度該事件。4.3案例——鬧鐘程序4.3.1案例任務(wù)描述該案例主要涉及的技術(shù)是事件處理,包括偵聽和響應(yīng)事件、向偵聽器通知事件、創(chuàng)建自定義事件類型等。程序運(yùn)行時(shí)顯示一個(gè)簡(jiǎn)易時(shí)鐘,以及設(shè)置鬧鈴響起時(shí)間的界面組件,鬧鐘時(shí)間到達(dá)時(shí)的提示消息,播放音樂歌曲代替鬧鈴。4.3.2操作流程程序功能演示;學(xué)生動(dòng)手練習(xí)。4.3.3案例小結(jié)該案例了使用AS3.0中的事件處理相關(guān)技術(shù),其中包括偵聽和響應(yīng)事件、向偵聽器通知事件、創(chuàng)建自定義事件類型。自定義Alarm事件,雖然僅為文本串的傳遞,但體現(xiàn)了對(duì)象間通信的技術(shù)本質(zhì)。鬧鐘的時(shí)鐘顯示部分,是完全用代碼畫到舞臺(tái)上的,這與直接在庫中畫顯示元件不同,不僅執(zhí)行效率高,而且減少fla文檔的大小。4.4鼠標(biāo)事件及響應(yīng)

鼠標(biāo)事件類MouseEvent是Event類的子類之一,MouseEvent對(duì)象還包含altKey、ctrlKey和shiftKey布爾屬性。可以使用這些屬性來檢查在鼠標(biāo)單擊時(shí)是否還按下了Ctrl或Shift鍵。

MouseEvent類中定義了10個(gè)常量,分別表示了10種不同的鼠標(biāo)事件類型。它們是CLICK、DOUBLE_CLICK、MOUSE_DOWN、MOUSE_MOVE、MOUSE_UP、MOUSE_OVER、MOUSE_WHEEL、MOUSE_OUT、ROLL_OUT、ROLL_OVER。其中,最常見使用的有4種,即CLICK、MOUSE_DOWN、MOUSE_OVER、MOUSE_UP??梢詫⑹髽?biāo)光標(biāo)隱藏或交換為舞臺(tái)上的任何顯示對(duì)象??赏ㄟ^調(diào)用Mouse.hide(),偵聽舞臺(tái)上是否發(fā)生MouseEvent.MOUSE_MOVE事件,以及將顯示對(duì)象(自定義光標(biāo))的坐標(biāo)設(shè)置為事件的stageX和stageY屬性。varcursor:Sprite=newSprite();cursor.graphics.beginFill(0x000000);cursor.graphics.drawCircle(0,0,20);cursor.graphics.endFill();addChild(cursor);stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor);Mouse.hide();functionredrawCursor(event:MouseEvent):void{cursor.x=event.stageX;cursor.y=event.stageY;}屬性含義localX鼠標(biāo)本地X坐標(biāo)localY鼠標(biāo)本地Y坐標(biāo)stageX鼠標(biāo)舞臺(tái)X坐標(biāo)stageY鼠標(biāo)舞臺(tái)Y坐標(biāo)ctrlKey是否按下Ctrl鍵shiftKey是否按下Shift鍵4.5案例——擊拍豆腐小游戲程序4.5.1案例任務(wù)描述該案例使用鼠標(biāo)事件完成,擊打從屏幕左方水平快速飛過來的豆腐塊,擊中后則豆腐粉碎向下方落去至消失,如沒有擊中,則自動(dòng)平移到右邊消失。并記錄擊打次數(shù)、擊中次數(shù)、沒打中遺漏個(gè)數(shù)、命中率、準(zhǔn)確率等實(shí)時(shí)數(shù)據(jù)。4.5.2操作流程程序功能演示;學(xué)生動(dòng)手練習(xí)。4.5.3案例小結(jié)該案例的功能實(shí)現(xiàn),偵聽器函數(shù)主要是鼠標(biāo)事件處理。通過偵聽及響應(yīng)鼠標(biāo)事件,完成相應(yīng)的偵聽動(dòng)作的執(zhí)行。通過創(chuàng)建自定義鼠標(biāo)光標(biāo)(將原來的鼠標(biāo)指針隱藏),捕獲應(yīng)用程序范圍內(nèi)的鼠標(biāo)動(dòng)作以及捕獲特定顯示對(duì)象的鼠標(biāo)輸入,增加游戲程序的逼真度。另外,還集中實(shí)現(xiàn)了影片剪輯的如何創(chuàng)建、定位、動(dòng)畫、擊打測(cè)試、刪除等。4.6鼠標(biāo)拖曳移動(dòng)物體

使用拖放功能,用戶可以在按鼠標(biāo)左鍵的同時(shí)選擇對(duì)象,將該對(duì)象移到屏幕上的新位置,然后松開鼠標(biāo)左鍵以將其放在新位置上。circle.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown)functionmouseDown(event:MouseEvent):void{circle.startDrag();}circle.addEventListener(MouseEvent.MOUSE_UP,mouseReleased);functionmouseReleased(event:MouseEvent):void{circle.stopDrag();trace(circle.dropT);}

使用MovieClip類和Sprite類的內(nèi)置的startDrag()和stopDrag()實(shí)現(xiàn)鼠標(biāo)拖動(dòng)物體時(shí),每次只能拖一個(gè)物體。如果想成批或每次拖動(dòng)多于一個(gè)的物體,則可以選擇使用在mouseMove事件中,編碼實(shí)現(xiàn)鼠標(biāo)跟隨功能,實(shí)現(xiàn)多個(gè)物體的集體拖動(dòng)。

需要注意:拖動(dòng)的物體對(duì)象上設(shè)置mouseDown偵聽器,對(duì)于mouseUP、mouseMove事件,也在舞臺(tái)上偵聽。4.7案例——鼠標(biāo)引領(lǐng)甲殼蟲程序4.7.1案例任務(wù)描述該案例是實(shí)現(xiàn)使用鼠標(biāo),引導(dǎo)甲殼蟲的程序。程序中使用鼠標(biāo)引領(lǐng)甲殼蟲移動(dòng)有三種方式:點(diǎn)擊舞臺(tái)點(diǎn)放置冰球引導(dǎo)甲殼蟲去追到、甲殼蟲直接跟隨鼠標(biāo)移動(dòng)、甲殼蟲通過先旋轉(zhuǎn)再跟隨鼠標(biāo)。4.7.2操作流程程序功能演示;學(xué)生動(dòng)手練習(xí)。4.7.3案例小結(jié)該案例使用鼠標(biāo)跟隨功能實(shí)現(xiàn)甲殼蟲的引導(dǎo)運(yùn)動(dòng)。通過鼠標(biāo)點(diǎn)擊舞臺(tái),訪問鼠標(biāo)在舞臺(tái)上的坐標(biāo),將該坐標(biāo)作為冰球或甲殼蟲的目的地坐標(biāo),從而完成引領(lǐng)甲殼蟲的功能。主文檔中通過遮罩層的使用,保證了冰球和甲殼蟲在越界后,就成不可見的,從而整個(gè)引領(lǐng)在一定的矩形范圍內(nèi),有引領(lǐng)的動(dòng)運(yùn)區(qū)域界限。4.8鍵盤事件入響應(yīng)

應(yīng)用程序可捕獲和響應(yīng)鍵盤的輸入并可操控輸入法編輯器(IME),使用戶可以鍵入多字節(jié)語言的非ASCII文本字符。與鼠標(biāo)事件的響應(yīng)類似,鍵盤事件處理時(shí),也可以在指定的對(duì)象上偵聽鍵盤事件,但舞臺(tái)上的可視對(duì)象只有獲得了焦點(diǎn)才能響應(yīng)鍵盤事件。stage.focus=varobjectname;

可以訪問鍵盤事件的keyCode和charCode屬性,以確定按下了哪個(gè)鍵,然后觸發(fā)其他動(dòng)作。keyCode屬性為數(shù)值,與鍵盤上的某個(gè)鍵的值相對(duì)應(yīng)。鍵盤事件KeyboardEvent有兩個(gè)類型:KEY_DOWN和KEY_UP,用戶按下某個(gè)鍵時(shí)會(huì)調(diào)度KEY_DOWN,而當(dāng)用戶釋放某個(gè)鍵后會(huì)調(diào)度KEY_UP。4.9案例——鍵盤操控甲殼蟲程序4.9.1案例任務(wù)描述通過使用鍵盤的方向鍵,按下上、下、左、右等不能方向的箭頭鍵,甲殼蟲完全按照按下的鍵的方向指示移動(dòng)。如果超出矩形邊界,則從對(duì)面的邊重新進(jìn)來。4.9.2操作流程程序功能演示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論