Flash Mx 2004 的發(fā)布,特別是改為V2 components以后, components的功能得到了極大的強(qiáng)化。而對(duì)于普通編程者來(lái)說(shuō),首先要了解的就是如何合理的使用這些components來(lái)完成期望的工作,也就是這個(gè)components能實(shí)現(xiàn)什么功能,會(huì)響應(yīng)哪些事件,響應(yīng)事件的過(guò)程是如何的,如何編寫事件響應(yīng)函數(shù)。 為此,我編寫了一個(gè)簡(jiǎn)單的components事件調(diào)試器,用來(lái)調(diào)試components的事件響應(yīng)過(guò)程(具體每個(gè)components的實(shí)現(xiàn)功能,請(qǐng)查閱Macromedia的help文檔) 下面用UI Components里面的 Button components來(lái)舉例說(shuō)明components事件調(diào)試器的用法:
如圖所示,從Flash中的 Components欄目中,找到并展開UI Components,將其中的 Button 這個(gè)組件拖入場(chǎng)景中, 在Properties里設(shè)置Instance Name為 but 然后,在主時(shí)間線上的第一幀,輸入以下的調(diào)試器代碼:
form = new Object(); form = function (evt) { trace("Begin"); for (var i in evt) { trace(i add ":" add typeof (eval("evt." add i)) add " = " add eval("evt." add i)); } trace("End"); }; function Init(obj){ obj.addEventListener("click", form); obj.addEventListener("focusIn", form); obj.addEventListener("focusOut", form); obj.addEventListener("keyDown", form); obj.addEventListener("keyUp", form); obj.addEventListener("resize", form); obj.addEventListener("move", form); obj.addEventListener("draw", form); obj.addEventListener("load", form); obj.addEventListener("unload", form); } Init(_root.but); stop();
然后選擇 Ctrl+Enter 或者在菜單里選擇 Control -> Test Movie 就可以在Flash中對(duì)這個(gè)components進(jìn)行操作并在output窗口中看到事件觸發(fā)過(guò)程了,例如:
Begin target:movieclip = _level0.but type:string = load End Begin target:movieclip = _level0.but type:string = draw End
Begin target:movieclip = _level0.but type:string = focusIn End Begin target:movieclip = _level0.but type:string = click End
Begin target:movieclip = _level0.but type:string = keyDown code:number = 65 ascii:number = 97 shiftKey:boolean = false ctrlKey:boolean = false End Begin target:movieclip = _level0.but type:string = keyUp code:number = 65 ascii:number = 97 shiftKey:boolean = false ctrlKey:boolean = false End
從上面的調(diào)試情況等可以看出,Button組件的基本事件如下:
load 參數(shù)(target,type) draw 參數(shù)(target,type)
(mouse事件) focusIn 參數(shù)(target,type) click 參數(shù)(target,type)
focusOut 參數(shù)(target,type)
(key事件) keyDown 參數(shù)(target,type,code,ascii,shiftKey,ctrlKey) keyUp 參數(shù)(target,type,code,ascii,shiftKey,ctrlKey)
move 參數(shù)(target,type,oldX,oldY) resize 參數(shù)(target,type,oldWidth,oldHeight)
unload 參數(shù)(target,type)
對(duì)于其他的Components,響應(yīng)的事件會(huì)根據(jù)組件而不同,獲取該組件的主要響應(yīng)事件的方法很簡(jiǎn)單,只要將該組件拖入場(chǎng)景,然后在action面板中輸入on(然后稍等一會(huì),action面包中會(huì)出現(xiàn)一個(gè)下拉式列表,列出該組件能響應(yīng)的主要事件。這時(shí)候,只要記下這些事件名,然后在主時(shí)間線第一幀修改調(diào)試器中的Init(obj)函數(shù),將相應(yīng)的事件加入監(jiān)聽器,格式類似于: obj.addEventListener("change", form); 通過(guò)調(diào)試器了解了組件所能響應(yīng)的事件和過(guò)程,只要修改 form函數(shù),根據(jù)type值判斷響應(yīng)的是哪個(gè)事件,我們就可以很輕松的編寫事件響應(yīng)程序,讓組件來(lái)完成期望的處理工作了。
點(diǎn)擊下載源程序
出處:藍(lán)色理想
責(zé)任編輯:藍(lán)色
◎進(jìn)入論壇Flash專欄版塊參加討論
|