Re: [問題] as2如何持續監聽一事件?

看板Flash作者 (CJ Cat)時間17年前 (2009/02/20 11:41), 編輯推噓3(305)
留言8則, 2人參與, 最新討論串2/2 (看更多)

02/20 11:16,
onEnterFrame好像一次只能處理一個函數耶?
02/20 11:16

02/20 11:17,
如果我要同時監聽不同事件 該怎麼做呢?@@
02/20 11:17
你可以把想做的事情都丟到一個Array裡面 var a:Function = function():Void { trace("function a()"); }; var b:Function = function():Void { trace("function b()"); }; var c:Function = function():Void { trace("function c()"); }; var array:Array = [a, b, c]; onEnterFrame = function():Void { for (var i:Number = 0; i < array.length; i++) { //應該是不用做轉型,不過做轉型看起來比較安全 Function(array[i])(); } }; 之後如果不想要繼續讓b被執行 就可以把b從array裡面splice掉 array.splice(array.indexOf(b), 1); 想要讓b重新開始被持續持行 就把b給push回去就好 array.push(b); 如果是要把他插到c前面 可以把b再splice回去 array.splice(array.indexOf(c), 0, [b]);

02/20 11:19,
話說我之前寫成onEnterFrame = a(); 結果只跑一次就沒了
02/20 11:19

02/20 11:19,
onEnterFrame = a;卻可以持續跑 不知道為何有這差別呢@@"
02/20 11:19
onEnterFrame是一個type為Function的property 所以onEnterFrame = a; 做的是讓onEnterFrame指到a這個function 而onEnterFrame = a(); 做的卻是把onEnterFrame指到a()回傳的東西 但是a()回傳的東西是Void 我沒有做過這種事情,但是我大膽假設這跟onEnterFrame = null意義是相同的 至於為什麼會執行一次 是因為你寫了a() 凡是一個function name或者一個指到某個Function的property後面 加上了()就表示你要呼叫他,然後回傳他的值 a()被執行一次就是這樣來的,反而跟"onEnterFrame = "這段沒有什麼關係 -- CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓 Blog http://cjcat.blogspot.com Gallery http://cjcat2266.deviantart.com ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.85.185 ※ 編輯: cjcat2266 來自: 61.228.85.185 (02/20 11:45)

02/20 12:01, , 1F
好詳細的解說 感謝大大^^
02/20 12:01, 1F

02/20 14:29, , 2F
cj大我用indexOf找不到元素在陣列中的位置耶ˊˋ"
02/20 14:29, 2F

02/20 14:31, , 3F
也找不到有語法可以用元素名稱取得他在陣列中的位置QQ"
02/20 14:31, 3F

02/20 14:48, , 4F
噢,看來AS2還沒有Array.indexOf()這個東西
02/20 14:48, 4F

02/20 14:48, , 5F
那你自己用迴圈找出元素的index應該不難吧
02/20 14:48, 5F

02/20 14:48, , 6F
for (var i:Number) = 0; i < array.length; i++)
02/20 14:48, 6F

02/20 14:48, , 7F
if (array[i] == b) trace("found");
02/20 14:48, 7F

02/20 16:13, , 8F
嗯嗯 OK了 感謝~~ 好懷念as3喔QQ
02/20 16:13, 8F
文章代碼(AID): #19dYPs8l (Flash)
討論串 (同標題文章)
文章代碼(AID): #19dYPs8l (Flash)