[問題] 移除子物件 它還是丟出dispatchEvent

看板Flash作者 (兔子)時間13年前 (2011/05/25 15:43), 編輯推噓8(8027)
留言35則, 7人參與, 最新討論串1/1
物件中第37格我寫 dispatchEvent(new Event("clear")); stop(); 在這物件被remove之後 會造成錯誤訊息 TypeError: Error #1009: 無法存取 Null 物件參考的屬性或方法。 at BR8_fla::MainTimeline/CLEAR() at flash.events::EventDispatcher/ flash.events:EventDispatcher::dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at o_bomb/::frame37() 和我的認知不太一樣? remove後不是就被消滅了嗎? 怎麼還會丟出事件? -- ◤ __ \__◢◤◢◤ ψhirabbitt ◤ ◢███◣ ◢███◣ 我不是m █████ █████ 我不是s ██ ███ 是溫柔 ██╱╲ ◥█████◣● 是傲嬌╱╱ ◥████ ˇ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.13.127.91

05/25 16:43, , 1F
removeChild ≠ removeEventListener
05/25 16:43, 1F

05/25 16:46, , 2F
EventListener我還要用 是子物件不應該丟出Event
05/25 16:46, 2F

05/25 17:34, , 3F
為何他不應該丟出
05/25 17:34, 3F

05/25 17:36, , 4F
因為它被remove掉啦0.0>
05/25 17:36, 4F

05/25 17:36, , 5F
沒有實體的物件怎麼丟出event?
05/25 17:36, 5F

05/25 19:20, , 6F
你說的 remove 是 removeChild 嗎?
05/25 19:20, 6F

05/25 20:41, , 7F
是啊0.0
05/25 20:41, 7F

05/25 20:42, , 8F
物件移除->物件第37格也移除->物件第37格的語法也被移除
05/25 20:42, 8F

05/25 20:42, , 9F
我是這樣想的啦
05/25 20:42, 9F

05/25 20:56, , 10F
removeChild 只是不顯示而已
05/25 20:56, 10F

05/25 20:56, , 11F
你想太多了
05/25 20:56, 11F

05/25 20:58, , 12F
我記得 removeChild 和 .visible = false 有一個差距
05/25 20:58, 12F

05/25 20:58, , 13F
但是我忘了 請樓下回答
05/25 20:58, 13F

05/25 21:06, , 14F
蛤 那我應該要怎麼寫呢?
05/25 21:06, 14F

05/25 21:13, , 15F
如果想要通通清乾淨的話>_<?
05/25 21:13, 15F

05/25 21:32, , 16F
我初學的時候寫在時間軸上問題也很多
05/25 21:32, 16F

05/25 21:33, , 17F
這種時候忍痛把它們用純as包起來控制,通常就能解決XD
05/25 21:33, 17F

05/26 03:06, , 18F
在物件裡加上REMOVED_FROM_STAGE事件,設定當它被移除
05/26 03:06, 18F

05/26 03:07, , 19F
的時候,會把本身的 Listener 都 remove 掉
05/26 03:07, 19F

05/26 03:07, , 20F
或是改成在把物件 removeChild 掉之前,先把它們都
05/26 03:07, 20F

05/26 03:08, , 21F
stop();這樣就不會偷偷的繼續跑影格了 QQ
05/26 03:08, 21F

05/26 09:34, , 22F
原來如此 感謝(順便問一下 雖然有丟出錯誤但是程式可以
05/26 09:34, 22F

05/26 09:34, , 23F
繼續跑 這樣子不理它有沒有關係?)
05/26 09:34, 23F

05/26 12:42, , 24F
最好不要有"不理他"這種情況出現...
05/26 12:42, 24F

05/26 13:59, , 25F
對不起>_<
05/26 13:59, 25F

05/26 14:02, , 26F
那請問 要取消dispatchEvent 也是用removedEventListene
05/26 14:02, 26F

05/26 14:02, , 27F
嗎? r
05/26 14:02, 27F
addEventListener(Event.REMOVED_FROM_STAGE, onRemoveFromStage); dispatchEvent(new Event("clear")); stop(); function onRemoveFromStage(E:Event.REMOVED_FROM_STAGE){ //這邊要寫什麼? } ※ 編輯: hirabbitt 來自: 163.13.127.91 (05/26 14:08)

05/26 14:47, , 28F
寫 stop(); 阿
05/26 14:47, 28F

05/26 15:09, , 29F
咦 對吼XD
05/26 15:09, 29F

05/27 19:09, , 30F
我想removeChild與visible差別在於一個會被GC回收
05/27 19:09, 30F

05/27 19:11, , 31F
但GC何時來回收掉沒法決定~除非用hack方式吧
05/27 19:11, 31F

05/29 00:34, , 32F
removeChild跟visible都不會被GC回收喔
05/29 00:34, 32F

05/29 00:35, , 33F
=null才會
05/29 00:35, 33F

05/29 00:45, , 34F
回樓上,其實不一定喔,會不會被GC回收
05/29 00:45, 34F

05/29 00:46, , 35F
一切看這個物件是不是orphan,意即有沒有被reference到
05/29 00:46, 35F
文章代碼(AID): #1DtBChG4 (Flash)
文章代碼(AID): #1DtBChG4 (Flash)