看板 Flash 關於我們 聯絡資訊
我的狀況是 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
cjcat2266:Loader會丟出Event.COMPLETE事件,那個時候就可以remove 12/17 23:11
event.COMPLETE的時候removeEnentListener 會變成b.swf沒有反應 對了 我用的event事件是 enterframe ※ 編輯: ulong 來自: 220.139.15.72 (12/17 23:52)
cjcat2266:看來我們在講的是不同事情,你把被監聽的event類型寫下 12/18 00:03
cjcat2266:來,會比較有助於溝通 12/18 00:03
我的寫法是 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)
cjcat2266:其實,你就在b.swf該被丟掉的code處,下方加一行remove 12/18 00:17
cjcat2266:這樣就可以確定b.swf被移除的同時,listener也被remove 12/18 00:17
我在b.swf被移除的地方加 但是flash的compiler無法認得 moveGallery 因為程式碼寫在不同的.fla檔案中 請問這有辦法克服嗎? 感謝你的熱心回答 ※ 編輯: ulong 來自: 220.139.15.72 (12/18 00:55)
cjcat2266:那就是重要機制沒有集中管理...感覺砍掉重練或許比較快 12/18 01:12
我不知道如何集中管理也 flash可以像c++一樣使用解構子嗎? unload的時候自己解構掉一些resource ※ 編輯: ulong 來自: 220.139.15.72 (12/18 01:19)
cjcat2266:那就是自己寫destroy()的用意,要丟掉以前自行呼叫解構 12/18 01:50
cjcat2266:Java也沒有destructor,這種使用虛擬機器的語言 12/18 01:50
cjcat2266:多半都是要自己寫一個destroy(),然後自行呼叫 12/18 01:50
scars:在C裡面監聽removeFromStage事件 去remove enterFrame如何? 12/18 02:04
cjcat的意思是自己寫一個 destroy的interface 可以在a.swf裡面呼叫是嗎? scars多謝 你這個提議我會試一下 我不知道有removeFromStage這種東西 因為我剛學flash 有些東西不知道可以如何用 問的時候也比較無法切中問題點 再次謝謝哦 另外請問你們學AS3.0有推的書嗎? 以前學c++有BIBLE 大家比較推的幾本 AS3.0現在有這種經典的書嗎? ※ 編輯: ulong 來自: 220.139.15.72 (12/18 03:01)
aquarianboy:精華區有,推EAS3 12/18 09:31
問題解決了 scars 建議的removeFromStage是一個可行的方法 當remove child時,會收到這個event 謝謝大家 ※ 編輯: ulong 來自: 59.124.68.163 (12/21 20:29)