[問題] removeEventListener使用時機 怎麼用?

看板Flash作者 (ulong)時間16年前 (2009/12/17 23:09), 編輯推噓5(506)
留言11則, 3人參與, 最新討論串1/1
我的狀況是 a.swf 裡會有一個loader把 b.swf 載入 b.swf 裡有一個 c物件 在c物件裡 addEventListener() a.swf unload b.swf 第二次要再load b.swf 會有問題 因為沒有removeEventListener() 但是我現在不知道要將removeEventListener()加在何處? b.swf unload之前 我要在那裡release 這些enent呢? 有什麼寫法可以參考嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.15.72

12/17 23:11, , 1F
Loader會丟出Event.COMPLETE事件,那個時候就可以remove
12/17 23:11, 1F
event.COMPLETE的時候removeEnentListener 會變成b.swf沒有反應 對了 我用的event事件是 enterframe ※ 編輯: ulong 來自: 220.139.15.72 (12/17 23:52)

12/18 00:03, , 2F
看來我們在講的是不同事情,你把被監聽的event類型寫下
12/18 00:03, 2F

12/18 00:03, , 3F
來,會比較有助於溝通
12/18 00:03, 3F
我的寫法是 this.addEventListener(Event.ENTER_FRAME, moveGallery); moveGallery 是移動gallery object 的一個function this在這指的是一開始上述的c物件 c物件要跟滑鼠動互所以只有b.swf被unload時 才能remove Event 但我不知道寫法形式上要如何寫 ※ 編輯: ulong 來自: 220.139.15.72 (12/18 00:12)

12/18 00:17, , 4F
其實,你就在b.swf該被丟掉的code處,下方加一行remove
12/18 00:17, 4F

12/18 00:17, , 5F
這樣就可以確定b.swf被移除的同時,listener也被remove
12/18 00:17, 5F
我在b.swf被移除的地方加 但是flash的compiler無法認得 moveGallery 因為程式碼寫在不同的.fla檔案中 請問這有辦法克服嗎? 感謝你的熱心回答 ※ 編輯: ulong 來自: 220.139.15.72 (12/18 00:55)

12/18 01:12, , 6F
那就是重要機制沒有集中管理...感覺砍掉重練或許比較快
12/18 01:12, 6F
我不知道如何集中管理也 flash可以像c++一樣使用解構子嗎? unload的時候自己解構掉一些resource ※ 編輯: ulong 來自: 220.139.15.72 (12/18 01:19)

12/18 01:50, , 7F
那就是自己寫destroy()的用意,要丟掉以前自行呼叫解構
12/18 01:50, 7F

12/18 01:50, , 8F
Java也沒有destructor,這種使用虛擬機器的語言
12/18 01:50, 8F

12/18 01:50, , 9F
多半都是要自己寫一個destroy(),然後自行呼叫
12/18 01:50, 9F

12/18 02:04, , 10F
在C裡面監聽removeFromStage事件 去remove enterFrame如何?
12/18 02:04, 10F
cjcat的意思是自己寫一個 destroy的interface 可以在a.swf裡面呼叫是嗎? scars多謝 你這個提議我會試一下 我不知道有removeFromStage這種東西 因為我剛學flash 有些東西不知道可以如何用 問的時候也比較無法切中問題點 再次謝謝哦 另外請問你們學AS3.0有推的書嗎? 以前學c++有BIBLE 大家比較推的幾本 AS3.0現在有這種經典的書嗎? ※ 編輯: ulong 來自: 220.139.15.72 (12/18 03:01)

12/18 09:31, , 11F
精華區有,推EAS3
12/18 09:31, 11F
問題解決了 scars 建議的removeFromStage是一個可行的方法 當remove child時,會收到這個event 謝謝大家 ※ 編輯: ulong 來自: 59.124.68.163 (12/21 20:29)
文章代碼(AID): #1BAacM8d (Flash)