付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第10章對象交互與處Delete鍵,告訴計算機當(dāng)前被選中的文件需要被刪除。計算機則響應(yīng)按下Delete鍵的,彈出框詢問是否確實需要刪除文件。這時,如果用與其使用者之間的一個交互過程。計算機與其使用者之間的交互很大程度上通過機制完成。在上述例子中,當(dāng)用戶按下鍵盤上的Delete鍵時觸發(fā)了一個鍵盤。在編寫計算機程序時,程序員已經(jīng)為按下Delete鍵這個定義了計算機應(yīng)當(dāng)反應(yīng)給用戶的行為。計算機對用戶按下Delete鍵時的反應(yīng)就是對該的一個處理,本例中計算機對的處理方式是詢問用戶是否確實需要刪除文件。當(dāng)用戶給出確認(rèn)后,計算機執(zhí)行在文件刪除的過程中,先后觸發(fā)了鍵盤與鼠標(biāo)。鍵盤是針對文件瀏覽器的,而鼠標(biāo)是針對被鼠標(biāo)單擊的“是”或“否”按鈕的。像文件瀏覽器、按鈕這樣事件發(fā)生的對象稱為對象。所以,用戶與計算機的交互過程實際上是發(fā)生在用戶與程序當(dāng)SWF文件在Flash yer中時,用戶也可以通過鼠標(biāo)鍵盤等觸發(fā)某些。這些通過程序中事先定義好的代碼進(jìn)行處理。ActionScript3.0中的不僅僅是鍵盤事外部資源載入完成的、網(wǎng)絡(luò)斷開與連接、異步異常以及狀態(tài)變更等。ActionScript3.0處理模型完全按照DOM3規(guī)格實現(xiàn),并且與可視對象列表緊密結(jié)合。、理解ActionScript3.0的處理模型,需要理解目標(biāo)(EventTarget)(EventFlow)、對象(EventObject)、偵(EventListener)、調(diào)度(Dispatch)等、ActionScript3.0模ActionScript3.0模型是ActionScript3.0處理的基本框架。ActionScript3.0的ActionScript3.0模型包括了幾個非常重要的概念,它們是目標(biāo)(EventTarget)流(EventFlow)、對象(EventObject)、偵(EventListener)、調(diào)通過dispatchEvent()函數(shù)手動進(jìn)行。偵(EventListener):是一個與對象關(guān)聯(lián)的函數(shù),用于處理某些特定 結(jié)合,所以當(dāng)發(fā)生時,F(xiàn)lashyer就自動生成一個對象(EventObject)。對象在ActionScript3.0中用于表現(xiàn)一個具體的。Event類是ActionScript3.0中其他MouseEvent類是Event類的子類,用于表現(xiàn)鼠標(biāo)。當(dāng)對象產(chǎn)生以后,對目標(biāo)對象就是目標(biāo)(EventTarget),這個自上而下的過程稱為捕捉(Capture)過程。的過程稱為冒泡(Bubble)ActionScript3.0對處理的3個過程,它們被稱之為流。對象與偵在流中被調(diào)度是內(nèi)嵌函數(shù)、對象方法或類的靜態(tài)函數(shù)。偵用于對某一具體作出響應(yīng)在ActionScript3.0中,并不是所有的都有完整的流,只有存在可視對象列表才會有完整的流。例如,異步異常的、Timer對象的計時器,它們的目產(chǎn)生,ActionScript3.0允許使用編程的主動調(diào)度。packagepackageimportflash.disimportflash.disimportimportflash.events.MouseEvent;importflash.text.TextField; publicclassEventDemoextends{publicfunction{varRED:Sprite=getNamedSprite("RED",200,200,0xff0000);varBLUE:Sprite=getNamedSprite("BLUE",150,150,0x0000ff);varGREEN:Sprite=getNamedSprite("GREEN",100,100,0x00ff00); }//得到一 Sprite,使每個色塊有文 publicfunctiongetNamedSprite(name:String,width:Number=150,{//創(chuàng)建矩形Shape對象,并設(shè)置屬varsh:Shape=newShape();sh.graphics.drawRect(0,0,width,height);//創(chuàng)建矩形TextField對象,并設(shè)置屬性vartxt:TextField=newTextField();//為extField對象指 varsp:Sprite=newSprite();//為Sprite對象指 return} privatefunction{var yObject=e.targetas yObject;//得 目 varcurrentTarget:Dis yObject=e.currentTargetasDis }}}}的3個矩形,并使貼有RED的矩形為貼有BLUR矩形的父級,貼有BLUE的矩形為貼有GREEN程序中使用DisyObject.addEventListener()方法對每件偵使用同一個偵函數(shù)。通過addEventListener() 圖10.1嵌套的矩形對字后,流過程如圖10.2中的弧線所示。圖10.2可視對象列表與單擊貼有GREEN矩形上的GREEN文字后,F(xiàn)lashyer產(chǎn)生一個MouseEvent再傳遞給貼有RED矩形對象RED_sprite。貼有RED矩形對象再把對象傳遞給貼有BLUE的矩形對象BLUE_sprite,貼有BLUE的矩形對象再傳遞給貼有GREEN的矩形對象GREEN_sprite,貼有GREEN的矩形對象再傳遞給其中的文本框子項GREEN_text。在這個過程中,對象從舞臺對象開始沿著可視對象列表向下檢查目標(biāo)文本框GREEN_text是否設(shè)置了偵,如果設(shè)置則調(diào)用該。由于文本框GREEN_text設(shè)置了onClick()方法作為它的偵,所以程序調(diào)用該偵方法后輸出結(jié)果如下所示。由于當(dāng)前過程是目標(biāo)過程,對象的target屬性與currentTarget屬性指向同一對象。接著,GREEN_text文本框?qū)ο蟀褜ο髠鬟f給它的父級對象——貼有GREEN的矩形GREEN_sprite對象。target:GREEN_text[objectTextField]current:GREEN_text[object檢查貼有GREEN的矩形GREEN_sprite是否設(shè)置了偵,如果設(shè)置則調(diào)用該偵。由于GREEN_sprite貼有GREEN矩形對象,已經(jīng)設(shè)置了示當(dāng)前的目標(biāo)是GREEN_text文本框?qū)ο?,而?dāng)前冒泡的對象則是GREEN_sprite貼有GREEN的矩形對象。接著,GREEN_sprite對象把對象傳遞給它的父級對象——貼有BLUE的矩形BLUE_sprite。target:GREEN_text[objectTextField]current:GREEN_sprite[object檢查貼有BLUE的矩形BLUE_sprite是否設(shè)置了偵,如果設(shè)置則調(diào)用該偵。由于BLUE_sprite藍(lán)色矩形對象已經(jīng)設(shè)置了onClick()方法作為它的GREEN_text文本框?qū)ο?,而?dāng)前冒泡的對象則是BLUE_sprite貼有BLUE的矩形對象。接著,BLUE_sprite對象把對象傳遞給它的父級對象——貼有RED的矩形target:GREEN_text[objectTextField]current:BLUE_sprite[object 檢查貼有RED的矩形RED_sprite是否設(shè)置了偵,如果設(shè)置則調(diào)用該偵。由于RED_sprite貼有RED的矩形對象,已經(jīng)設(shè)置了onClick()方法作件目標(biāo)是GREEN_text文本框?qū)ο?,而?dāng)前冒泡的對象則是RED_sprite貼有RED的矩形對象。接著,RED_sprite對象把對象傳遞給它的父級對象——文檔對象。target:GREEN_text[objectTextField]current:RED_sprite[object 出結(jié)果如下所示,表示當(dāng)前的目標(biāo)是GREEN_text文本框?qū)ο?,而?dāng)前冒泡的對target:GREEN_text[objecttarget:GREEN_text[object 檢查舞臺對象是否設(shè)置了偵,如果設(shè)置則調(diào)用該偵。由于舞臺對象已經(jīng)設(shè)置了onClick()方法作為它的偵,所以程序調(diào)用該偵方法后輸出結(jié)果如下所示,表示當(dāng)前的目標(biāo)是GREEN_text文本框?qū)ο?,而?dāng)前冒泡的對象則target:GREEN_text[objecttarget:GREEN_text[object 程序輸出結(jié)果的順序顯示了流中可視對象的冒泡順序。由于鼠標(biāo)單擊的對象臺對象。對象用target屬性來表示當(dāng)前的目標(biāo)GREEN_text,而用currentTarget增加一個偵onClick()函數(shù),它在流的冒泡過程中被調(diào)用。 偵偵函數(shù)必須帶一個與當(dāng)前觸發(fā)的類型相兼容的類型參數(shù),并且偵函型的參數(shù)來表現(xiàn)鼠標(biāo)。如果需要處理的是對象的鍵盤,則偵函數(shù)需要一個KeyboardEvent類型的參數(shù)用于表現(xiàn)鍵盤。以下代碼把函數(shù)與可視對象關(guān)聯(lián),使函數(shù)成為該可視對象的偵。varspr:Sprite=newSprite();varspr:Sprite=newSprite();偵functionfunction中,首先創(chuàng)建一個Sprite類型的可視對象spr,然后兩次調(diào)用addEventListener()方法把兩個偵函數(shù)與spr對象的鼠標(biāo)單擊和鍵盤按下相關(guān)聯(lián)。mouseClick()函數(shù)與keyDown()函數(shù)是兩個偵函數(shù)。mouseClick()函數(shù)與spr對象的鼠標(biāo)單擊相關(guān)聯(lián),鼠標(biāo)單擊spr對象時mouseClick()函數(shù)被調(diào)用。mouseClick()函數(shù)帶了一個MouseEvent類型的參數(shù)用于表現(xiàn)鼠標(biāo),且指定函數(shù)返回值類型為void。keyDown()函數(shù)與spr對象的鍵盤按下相關(guān)聯(lián),觸發(fā)spr對象的鍵盤按下時函數(shù)帶一個addEventListener()方法的作用是把流中的對象與偵相關(guān)聯(lián)。本例在調(diào)用addEventListener()方法時傳入了兩個參數(shù),第一個參數(shù)為String類型的名稱,第二個參數(shù)為偵函數(shù)的名稱。MouseEvent.CLICK屬性表示鼠標(biāo)單擊,它被定義為MouseEventaddEventListener()MouseEvent.CLICK作為參數(shù)與直接使用字符串click作為參數(shù)的效果是一樣的。但是直接使用字符串容易引起拼寫錯誤,建議使用類型的靜態(tài)常量。目標(biāo)與偵的關(guān)聯(lián)關(guān)系并非是一對一的關(guān)系,它們可以是一對多甚至是多對多的交錯關(guān)系。例如,以下代碼為Sprite類型的對象關(guān)聯(lián)了兩個偵: //添加單 varspr:Sprite=new以上代碼兩次addEventListener()方法mouseClick1()函數(shù)mouseClick2()函數(shù)關(guān)聯(lián)到Sprite對象中。當(dāng)Sprite對象的鼠標(biāo)單擊被觸發(fā)后,將依次調(diào)用mouseClick1()函數(shù)與mouseClick2()函數(shù)。同理,多個目標(biāo)也可以關(guān)聯(lián)到一個偵函數(shù)。varvarspr1:Sprite=newSprite();varspr2:Sprite=new鼠標(biāo)單擊關(guān)聯(lián)到同一個偵mouseClick()函數(shù)。EventDispatcher類中對偵進(jìn)行管理的方法如表10.1所示表10.1偵管理方 添加一個偵函移除一個偵函檢查是否具有偵價差是否有偵與當(dāng)前對象綁 偵addEventListener(type:String,addEventListener(type:String,listener:Function,useCapture:Boolean=priority:int=0,useWeakReference:Boolean=當(dāng)前EventDispatcher對象的指定一旦被觸發(fā),與之關(guān)聯(lián)的偵函數(shù)也將被調(diào)用addEventListener()方法沒有返回值,但是帶5個參數(shù),如下type參數(shù):是一個String類型的字符串,用于指示類型。type參數(shù)通常使用對象類型的靜態(tài)屬性作為實參傳入,例如,MouseEvent.CLICK、參數(shù),和直接使用對象類型的靜態(tài)屬性作為type參數(shù)的效果是一樣的,但還是建議使用對象類型的靜態(tài)屬性作為type參數(shù)。因為使用字符串作為type參數(shù)listener參數(shù):用于指定處理的偵函數(shù)。listener參數(shù)要求一個Function類useCapture:是一個Boolean類型參數(shù),指示在時間流的哪個階段進(jìn)行偵函數(shù)如果useCapture,參數(shù)為true,則表示在捕獲階段調(diào)用偵函數(shù)。如果程序要在次,一次指定useCapture參數(shù)為true,另一次指定useCapture參數(shù)為false。useWeakReference:為Boolean型參數(shù),默認(rèn)值為false,指示對偵函數(shù)的是強還是弱。如果希望偵函數(shù)不再被目標(biāo)使用時就被Flashyer作為回收,就應(yīng)該指定useWeakReference參數(shù)為true。與EventDispatcher對象通過addEventListener(方法建立關(guān)聯(lián)關(guān)系,removeEventremoveEventListener(type:String,removeEventListener(type:String,listener:Function,useCapture:Boolean=MouseEvent.CLICK、TimerEvent.TIMER、KeyboardEvent.KEY_DOWN等類listener:參數(shù)是一個Function類型的參數(shù),直接使用偵函數(shù)的名稱。listeneruseCapture:是一個Boolean類型參數(shù),用于取消關(guān)聯(lián)的偵屬于流的falsetype,參數(shù)所指定的事件類型上,取消listener參數(shù)所指定的偵函數(shù)與EventDispatcher對象之間,在目hasEventListener()方法用于檢測當(dāng)前EventDispatcher對象的某一特定類型,是否 willTrigger()方法帶一個類型參數(shù)并且返回Boolean類型的值hasEventListener()willTrigger()方法都帶type參數(shù)。type參數(shù)是一String類型的字符串,用于指示需要檢測的類型??梢詡魅隡ouseEvent.CLICK、TimerEvent.TIMER、KeyboardEvent.KEY_DOWN等類型的靜態(tài)常量。hasEventListener()方法得Boolean類型的返回值。如果true,則表示指定的事件偵與當(dāng)前EventDispatcher對象關(guān)聯(lián)。willTrigger()方法得到一個Boolean類型的返回值。如果返回true,則表示指定的類偵與流中的EventDispatcher對象關(guān)聯(lián)。dispatchEvent()用于調(diào)度EventDispatcher對象上的某個特定,調(diào)用 dispatchEvent()方法帶一個被調(diào)度類型參數(shù)且返回Boolean類型的值varvarevent:MouseEvent=newMouseEvent(MouseEvent.CLICK);以上代碼將觸發(fā)spr對象的鼠標(biāo)單擊。程序的第一行代碼創(chuàng)建了一個MouseEvent類型的對象,并制定對象的類型為MouseEvent.CLICK。代碼的第二行代碼則使用dispatchEvent()方法調(diào)度該對象,在spr對象上觸發(fā)鼠標(biāo)單擊。dispatchEvent()方法返回Boolean類型的值。如果返回true,則表示指定的已經(jīng)成功對象是一個用于表現(xiàn)觸發(fā)信息的對象。對象是Event類或Event類子類的實例,它們可以由Flashyer產(chǎn)生也可在程序中主動創(chuàng)建。為了表現(xiàn)不同的類型,中比較常用的對象類型如表10.2所示。表10.2常用對象類事件 HTTP類型基類EventPhase類中。EventPhase.CAPTURING_PHASE靜態(tài)常量的值為1,表示捕EventPhase.AT_TARGET靜態(tài)常量的值為2EventPhase.BUBBLING_PHASE靜態(tài)常量的值為3,表示冒type屬性得到一個字符串類型的值,用于表現(xiàn)類型。如果當(dāng)前是一個鼠標(biāo)單擊,則type屬性的值為click。鼠標(biāo)單擊存在冒泡過程是一個冒泡,而Timer類按時間間隔調(diào)用的cancelable屬性常常與preventDefault()方法、isDefaultPrevented()一起使用。cancelable屬性是一個Boolean類型的屬性,表示是否可以被取消。對于某些,ActionScript已經(jīng)為其定義了默認(rèn)行為,例如,在文本框中輸入文字時每輸入一個就會顯示在文本框上,這個被定義為TextEvent.TEXT_INPUT。該是文本框的一個默認(rèn)行為,這種默認(rèn)行為是可以被取消的,所以cancelable屬性為true。preventDefault()方法用于默認(rèn)行為的發(fā)生。isDefaultPrevented()則返回一個邏輯值,表示是否已經(jīng)調(diào)用了preventDefault()方法來默認(rèn)行為的varinput:TextField=newTextField();varinput:TextField=newTextField();functiononInput(e:Event):void{//設(shè)置//設(shè)置文本框類偵{}}以上代碼創(chuàng)建了一個TextField文本框?qū)ο?,并給該文本框?qū)ο筇砑右粋€TextEvent.TEXT_INPUT偵。從程序輸出可以看出,TextEvent.TEXT_INPUT是一個可同時輸出isDefaultPrevented()方法返回值該返回值已經(jīng)變?yōu)閠rue。preventDefault()方法和stopImmediatePropagation()方法都用于在流中調(diào)用調(diào)用與其關(guān)聯(lián)的偵函數(shù),同時還其自身對象調(diào)用偵函數(shù)。而Event類定義了一些比較通用的類型,如表10.3列舉了部分Event類中定義的事件類型。關(guān)于其他Event類中定義的類型,可參看ActionScript3.0的幫助文件。表10.3Event類 Event.ACTIVATE和Event.DEACTIVATE用于表示對象的激活和休眠事件。不管可視對象是否位于可視對象列表,這兩個都將被觸發(fā)。以下代碼添加了舞臺對象的Event.ACTIVATE和Event.DEACTIVATE。當(dāng)Flashyer獲得焦點時,將觸發(fā)Event.ACTIVATE。當(dāng)Flashyer失去焦點時,將觸發(fā)。this.stage.addEventListener(Event.DEACTIVATE,atv)//this.stage.addEventListener(Event.DEACTIVATE,atv)//為舞臺對象添加休眠this.stage.addEventListener(Event.ACTIVATE,atv);//為舞臺對象添加激活functionatv(e:Event):void{vartar:Dis yObject=e.targetasDis trace(tar+":"+e.type);}以上代碼為舞臺對象添加了Event.ACTIVATE和Event.DEACTIVATE偵聽器函數(shù)atv()。在atv()函數(shù)中輸出目標(biāo)與類型。運行該程序,當(dāng)程序從Flashyer切換回Flashyer將觸發(fā)Event.ACTIVATE。當(dāng)可視對象被添加到可視對象列表時,被調(diào)度添加與移除。添加包括表的子可視對象列表,都將觸發(fā)Event.ADDED。如果可視對象是被添加到以舞臺對象為根節(jié)點可視對象列表中,那么將同時觸發(fā)Event.ADDED_TO_STAGE。同樣,移除也包括Event.REMOVED事件和Event.REMOVED_FROM_STAGE。它們的調(diào)度機制和添加類似。以下是使用添加與移除的示例代碼。vartxt:TextField=newTextField();vartxt:TextField=newTextField(); functionfunction{vartar:Dis yObject=e.targetasDis trace(+":"+e.type);}以上代碼創(chuàng)建TextField對象并為其添加可視對象的添加與移除。分別執(zhí)幀頻Event.ENTER_FRAME是一個按照SWF幀頻進(jìn)行調(diào)度的。當(dāng)SWF到下一幀時,Event.ENTER_FRAME就被調(diào)度,所以幀頻是一個被持續(xù)調(diào)度的。varspr:Sprite=newSprite();varspr:Sprite=newSprite();functiondoEvent(e:Event):void{ vartar:Dis yObject=e.targetasDis trace(+":"+e.type);}以上代碼創(chuàng)建一個Sprite類型的可視對象,并為其添加Event.ENTER_FRAME偵聽器函數(shù)doEvent(),該函數(shù)隨著SWF的被持續(xù)調(diào)度。鼠標(biāo)類型的鼠標(biāo)類型如表10.4所示。表10.4鼠標(biāo)類 表10.4中的MouseEvent.MOUSE_OUT與MouseEvent.ROLL_OUT都是鼠標(biāo)移出,但它們是有區(qū)別的。例如,有兩個矩形影片剪輯ret_parent和ret_child,ret_child是ret_parent的子項,并且它們有的區(qū)域。當(dāng)鼠標(biāo)移出到ret_parent所在區(qū)域以外的區(qū)域時,同時觸發(fā)MouseEvent.MOUSE_OUT與MouseEvent.ROLL_OUT。發(fā),而MouseEvent.ROLL_OUT卻并不被觸發(fā)。MouseEvent.ROLL_OVER與MouseEvent.MOUSE_OVER也是同樣的道理。MouseEventEventEvent類相比,它增加了一些與鼠通過localX屬性和localY屬性可以得到鼠標(biāo)發(fā)生的位置。localX屬性和localY屬性以目標(biāo)的(0,0)點坐標(biāo)為基準(zhǔn),計算鼠標(biāo)發(fā)生的坐標(biāo)位置。通過altKey、ctrlKey、shiftKey這3個屬性用于在鼠標(biāo)中判斷鍵盤狀態(tài),它們返回Boolean類型的值。altKey屬性用于判斷Alt鍵是否按下,ctrlKey屬性用于判斷Ctrl鍵是否按下,shiftKey屬性則用于判斷Shift鍵是否按下。relatedObject屬性了與鼠標(biāo)相關(guān)的對象。它僅對MouseEvent.MOUSE_OUT中,鼠標(biāo)從可視對象A移出后剛好位于可視對象B上,則relatedObject屬性到可視對象B。屬性表示滾輪滾動單位與滾動的行數(shù)之間的比例關(guān)系。例如,delta3表updateAfterEvent()函數(shù)的作用是指示Flashyer立即呈現(xiàn)對可視對象的處理結(jié)果。例如,在應(yīng)用中創(chuàng)建鼠標(biāo)跟隨的效果,則可以使用updateAfterEvent()函數(shù)使varspr:Sprite=newSprite();varspr:Sprite=newSprite();spr.graphics.drawRect(0,0,50,50);function以上代碼創(chuàng)建了一個Sprite類型對象spr,并使用矩形色塊填充。為了使該矩形跟隨鼠標(biāo)移動,為舞臺對象指定MouseEvent.MOUSE_MOVE。在偵函數(shù)中設(shè)置spr對象的x屬性和y屬性,分別為MouseEvent對象的stageX屬性和stageY屬性。最后調(diào)用MouseEvent對象的updateAfterEvent()方法,同時Flashyer立即更新可視對象對象鍵盤KeyboardEvent類型是Event類型的子類,用于表現(xiàn)鼠標(biāo)。KeyboardEvent事件類型所表現(xiàn)的鍵盤包括KeyboardEvent.KEY_DOWN和UP則表示鍵盤鍵的釋放。KeyboardEventEventEventEvent類相屬性,用于在鍵盤中判斷Alt鍵、Ctrl鍵以及Shift鍵的狀態(tài)。charCode屬性表示按下或釋放的鍵的字符碼。keyCode屬性得到按下或釋放鍵的鍵控代碼。當(dāng)使用輸入法時鍵盤對象的keyCode屬性得到的鍵控代碼不一定準(zhǔn)確。另外,keyLocation屬性用于判斷按下或釋放鍵的位置。Alt鍵、Ctrl鍵以及Shift鍵在鍵盤上的鍵通常會有兩個,keyLocation屬性可以判斷按下的是左邊的鍵////鍵盤publicclassKeyboardDemoextends{publicfunctionKeyboardDemo{ //定 function{//如果按下Ctrl+S,則輸出保存文檔if(e.ctrlKey&&e.charCode==115){trace("SaveThe*此處定義其他代}}}}按下Ctrl+S鍵時輸出SaveTheFile。在實際應(yīng)用中可以在該if語句的分支中定義更復(fù)雜的文本類TextEvent類型是Event類型的子類,用于表現(xiàn)文本。TextEvent類型所表現(xiàn)的文本包括TextEvent.LINK和TextEvent.TEXT_INPUT。類自身僅包含text這一個屬性,用于在文本中獲取輸入的字符或字符串。以下是TextEvent.LINK的實例代碼。publicpublicclassTextEventDemoextendspublicfunctionvarhtml:TextField=newTextField();html.autoSize=TextFieldAutoSize.LEFT;html.multiline=true;html.background=html.htmlText打開<a functiononLink(e:TextEvent):voidtrace("YouClick:"+e.text)以上代碼創(chuàng)建一個文本框并使其支持HTML。設(shè)置HTML的A標(biāo)記href屬性為event:AdobeWebSite,使其觸發(fā)TextEvent.LINK。冒號后的AdobeWebSite作為TextEvent對象的text屬性傳入偵函數(shù)onLink()。navigateToURL()函數(shù)是位于包中的頂級函數(shù),它使瀏覽器指定的。焦點FocusEvent類型是Event類型的子類,用于表現(xiàn)焦點。FocusEvent類型所表現(xiàn)的焦點如表10.5所示。表10.5焦點類 對象的焦點可以由鼠標(biāo)、鍵盤、編程這3種方式改變。KEY_FOCUS_CHANGE與MOUSE_FOCUS_CHANGE可以引起FOCUS_IN與FOCUS_OUT的調(diào)度。如果在KEY_FOCUS_CHANGE與MOUSE_FOCUS_CHANGE中調(diào)用對象的preventDefault()方法,將不再觸發(fā)FOCUS_IN與FOCUS_OUT。通過設(shè)置Stage.focus屬性可以改變對當(dāng)前舞臺中的焦點對象。FocusEvent類包含以下屬性keyCode屬性的數(shù)據(jù)類型為uint型,通過keyCode屬性得到由鍵盤改變焦點的鍵控代碼值。keyCode屬性只是在KEY_FOCUS_CHANGE中才有效。在Windows操作系統(tǒng)中,改變對象焦點都會使用Tab鍵,它的代碼是9。shiftKeyBooleanShiftWindows操作系統(tǒng)中按下Shift鍵后再按Tab鍵將使舞臺上的對象以反向的順序依次獲得焦點。relatedObject屬性表示與本次焦點相關(guān)的對象。例如,在KEY_FOCUS_CHANGE中relatedObject屬性用于表示獲取焦點的對象。本框中的文字,這個小功能會常常在Web開發(fā)中用到。publicpublicclassFocusDemoextends{publicfunction{vartxt_1:TextField=newTextField(); //添加FOCUS_IN//添加偵偵}publicfunctionfocusIn(e:FocusEvent):void//FOCUS_IN {vartxt:TextField=e.targetasTextField; {}}publicfunction//FOCUS_OUT {vartxt:TextField=e.targetasTextField;{txt.text="請輸入您 }}}加FOCUS_IN的偵函數(shù)focusIn()和FOCUS_OUT的偵函數(shù)focusOut()。當(dāng)計時器TimerEvent類型是Event類型的子類,用于表現(xiàn)計時器。TimerEvent類型所表現(xiàn)的計時器包括TimerEvent.TIMER和Ti PLETE事件。TimerEvent.TIMER表示按照指定時間間隔被調(diào)度的;TimerEvent.TIMER_7章內(nèi)容中已經(jīng)介紹了Timer類和TimerEvent類的使用,此處不再贅述。HTTP狀態(tài)HTTPStatusEvent類型是Event類型的子類,用于表現(xiàn)HTTP狀態(tài)。HTTP狀表示請求的資源不存在;500表示服務(wù)器內(nèi)部錯誤等。HTTPStatusEvent類型所表現(xiàn)的HTTP狀態(tài)僅包括HTTPStatusEvent.HTTP_STATUS。HTTPStatusEvent類型的status屬性用于獲取HTTP狀態(tài)值。以下是處理HTTP狀態(tài)的一個示例。publicpublicclassHTTPDemoextends{{//創(chuàng)建URLLoader對象從指定地址載入網(wǎng)varloader:URLLoader=new//添加HTTP_STATUS loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,onHttpvarrequest:URLRequest=newURLRequest("ht } 的 函privatefunction{trace("status:"+}}以上代碼創(chuàng)建一個URLLoader對象從指定的網(wǎng)絡(luò)地址載入資源,由于HTTP200網(wǎng)絡(luò)狀態(tài)事件類型所表現(xiàn)的HTTP狀態(tài)僅包括NetStatusEvent.NET_STATUS。NetStatusEvent類型的info屬性用于獲取網(wǎng)絡(luò)的狀態(tài)值。NetStatusEvent類型一般NetConnection對象、NetStream對象以及SharedObject對象一起使用,通過NetStatusEvent.NET_STATUS報告對象在不同階段的網(wǎng)絡(luò)狀態(tài)。publicpublicclassNetStatusEventDemoextends{privatevarcon:NetConnection=null;publicfunctionNetStatusEventDemo(){con=new //創(chuàng)建NetConnection對//為NET_STATUS添加偵 } 函privatefunction{//infolevelcode屬性varlevel:String=["level"];varcode:String=["code"];}}以上代碼創(chuàng)建了一個NetConnection對象,并為它的NET_STATUS添加偵函數(shù)onStatus。然后調(diào)用connect()方法和close()方法打開與關(guān)閉連接。NetConnection對象的connect()方法和close()方法將都會觸發(fā)NetStatusEvent.NET_STATUS。Objectinfo屬性,infolevelcode。levelstatuserror;code屬性返回用字符串表示的狀態(tài)值。例如,NetConnection.Connect.Success表示NetConnection對象已經(jīng)成功連接,NetConnection.趣的讀者可以參看ActionScript3.0的幫助文件。運行程序,輸出結(jié)果如上所示。進(jìn)度類型包括ProgressEvent.PROGRESS與ProgressEvent.SOCKET_DATA。ProgressEvent.PROGRESS在數(shù)據(jù)傳輸過程中被調(diào)度SocketProgressEvent類型包括bytesLoaded屬性和bytesTotal屬性。bytesTotal屬性表示publicpublicclassProgressEventDemoextends{publicfunctionProgressEvent{//創(chuàng)建Loader對象從指定地址載入網(wǎng)絡(luò)資varloader:URLLoader=new//添加PROGRESS varrequest:URLRequest=newURLRequest("ht } 的 函privatefunction{varpercent:Number=(e.bytesLoaded/e.bytesTotal)*100計算百分比}}ULLodrULoaer對加PROGRESS的偵函。在函數(shù)中輸載入總、當(dāng)前入量據(jù)百。數(shù)達(dá)用onrgs()偵函數(shù)顯示載入進(jìn)度,如上輸出所示。異步異常ErrorEvent、IOErrorEvent、ErrorEventIOErrorEventSecurityErrorEvent這3個類型的對象都用于表現(xiàn)異常。ErrorEventIOErrorEventSecurityErrorEventErrorEvent類則繼承自TextEvent。ErrorEvent類型包含一個ErrorEvent.ERROE,IOErrorEvent類型包含一個IOErrorEvent.IO_ERROR,SecurityErrorEvent類型包含一個SecurityErrorEvent.SECURITY_ERROR。ErrorEventIOErrorEventSecurityErrorEvent類型的對象都包含一個text屬性用于獲取錯誤信息。以下是使用異步異常的一個示例。該示例中,由于SWF文件運行環(huán)境的不同將分別觸發(fā)IOErrorEvent.IO_ERROR和SecurityErrorEvent.SECURITY_ERROR。FlashCS3IDE中新建一個ActionScript3.0fla文件,在該fla文件的發(fā)布設(shè)置中設(shè)置其“本地回放安全性”為“只本地文件”。為該fla文件并指定文檔類為{importflash.dis importflash.dis importflash.events.HTTPStatusEvent;importflash.events.IOErrorEvent;import.URLLoader;importpublicclassErrorEventDemoextends{publicfunction{varloader:URLLoader=new//添加 //添加SECURITY_ERROR varrequest:URLRequest=newURLRequest(" } privatefunction{trace("onIOError:"+} privatefunction{trace("onSecurityError:"+}}}ErrorEventDemoURLLoader對象,并為其指定IOErrorEvent.IO_ERROR的異常處理偵函數(shù),以及SecurityErrorEvent.SECURITY_FlashCS3IDEURL資源并不存在,URLLoader.load()方在外部獨立啟動SWF文件。由于該fla文件已經(jīng)被設(shè)置為“只本地文件”,所以當(dāng)前SWF無法網(wǎng)絡(luò)。onSecurityError()偵函數(shù)被調(diào)用。全屏FullScreenEvent類型繼承自ActivityEvent類是Event類型的子類,用于表現(xiàn)舞臺對象的全屏。FullScreenEvent類型僅包括FullScreenEvent.FULL_SCREEN一個事屏狀態(tài)。以下是在全屏切換時使用FullScreenEvent對象的簡單示例。functionswitchFullScreen{//添加單//按鈕單偵 函 functiononFullscreen(e:FullScreenEvent)FlashCS3IDEm_btn按鈕用于全屏切換,info_txt文本框用于輸出信息。switchFullScreen()單擊偵函數(shù)用于全屏模式切ActionScript3.0Flash應(yīng)用被運行在觸摸品機器上,為企業(yè)的客戶提供一很多觸摸屏機器還帶有、、機等外接設(shè)備提供一定的輸入輸出功能。絕多觸摸式系統(tǒng)帶有查詢功能,例如醫(yī)院中自助式的觸摸式藥品查詢系統(tǒng)、化驗單打印FlexBuilder3VirtualKeyboard的虛擬鍵盤應(yīng)用,并實現(xiàn)FlexActionScriptFlexBuilder3File|New|ActionScriptProject命令,打開NewActionScriptProject框。在ProjectName文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 招20人!海東市高鐵新區(qū)醫(yī)院招聘參考題庫附答案
- 2026年魯南技師學(xué)院第一批公開招聘教師(8名)備考題庫附答案
- 紹興市綜合行政執(zhí)法局關(guān)于公開選調(diào)事業(yè)編制工作人員1人備考題庫附答案
- 艾滋病知識教學(xué)課件
- 2025四川綿陽市投資控股(集團(tuán))有限公司招聘運營管理崗擬錄用人員筆試歷年參考題庫附帶答案詳解
- “夢想靠岸”招商銀行唐山分行2026校園招聘筆試歷年典型考題及考點剖析附帶答案詳解
- 2026平安銀行校園招聘官網(wǎng)/筆試歷年典型考題及考點剖析附帶答案詳解
- 2025黃巖農(nóng)商銀行員工招聘綜合柜員崗筆試歷年典型考題及考點剖析附帶答案詳解
- 2025貴陽銀行校園招聘網(wǎng)申(3月14日16日)筆試歷年典型考題及考點剖析附帶答案詳解
- 2025蘇州銀行零售銀行總部企劃綜合部招聘1人筆試歷年典型考題及考點剖析附帶答案詳解
- 卒中后認(rèn)知障礙管理專家共識
- 大學(xué)教材排查報告
- 南京科技職業(yè)學(xué)院單招職測參考試題庫(含答案)
- 開磷集團(tuán)(電池級磷酸一銨)項目環(huán)評報告
- 氣動元件與基本回路
- 安川機器人IO信對照表
- 案例(母線PT反充電)
- 甘肅省住院醫(yī)師規(guī)范化培訓(xùn)實施方案
- 讓課堂煥發(fā)生命的活力
- 上海市歷年中考語文文言文閱讀試題45篇(含答案與翻譯)(截至2021年)
- 丁類(D類)功率放大器
評論
0/150
提交評論