作者hirabbitt (兔子)
看板Flash
標題[問題] 移除子物件後 該物件還是丟出dispatchEvent
時間Wed May 25 15:43:36 2011
物件中第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
1F:推 etrexetrex:removeChild ≠ removeEventListener 05/25 16:43
2F:→ hirabbitt:EventListener我還要用 是子物件不應該丟出Event 05/25 16:46
3F:推 etrexetrex:為何他不應該丟出 05/25 17:34
4F:→ hirabbitt:因為它被remove掉啦0.0> 05/25 17:36
5F:→ hirabbitt:沒有實體的物件怎麼丟出event? 05/25 17:36
6F:推 etrexetrex:你說的 remove 是 removeChild 嗎? 05/25 19:20
7F:→ hirabbitt:是啊0.0 05/25 20:41
8F:→ hirabbitt:物件移除->物件第37格也移除->物件第37格的語法也被移除 05/25 20:42
9F:→ hirabbitt:我是這樣想的啦 05/25 20:42
10F:推 etrexetrex:removeChild 只是不顯示而已 05/25 20:56
11F:→ etrexetrex:你想太多了 05/25 20:56
12F:→ etrexetrex:我記得 removeChild 和 .visible = false 有一個差距 05/25 20:58
13F:→ etrexetrex:但是我忘了 請樓下回答 05/25 20:58
14F:→ hirabbitt:蛤 那我應該要怎麼寫呢? 05/25 21:06
15F:→ hirabbitt:如果想要通通清乾淨的話>_<? 05/25 21:13
16F:→ dsmwang:我初學的時候寫在時間軸上問題也很多 05/25 21:32
17F:→ dsmwang:這種時候忍痛把它們用純as包起來控制,通常就能解決XD 05/25 21:33
18F:→ sextitanic:在物件裡加上REMOVED_FROM_STAGE事件,設定當它被移除 05/26 03:06
19F:→ sextitanic:的時候,會把本身的 Listener 都 remove 掉 05/26 03:07
20F:→ sextitanic:或是改成在把物件 removeChild 掉之前,先把它們都 05/26 03:07
21F:→ sextitanic:stop();這樣就不會偷偷的繼續跑影格了 QQ 05/26 03:08
22F:→ hirabbitt:原來如此 感謝(順便問一下 雖然有丟出錯誤但是程式可以 05/26 09:34
23F:→ hirabbitt:繼續跑 這樣子不理它有沒有關係?) 05/26 09:34
24F:推 cjcat2266:最好不要有"不理他"這種情況出現... 05/26 12:42
25F:→ hirabbitt:對不起>_< 05/26 13:59
26F:→ hirabbitt:那請問 要取消dispatchEvent 也是用removedEventListene 05/26 14:02
27F:→ hirabbitt:嗎? r 05/26 14:02
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)
28F:推 etrexetrex:寫 stop(); 阿 05/26 14:47
29F:→ hirabbitt:咦 對吼XD 05/26 15:09
30F:→ sayaku0210:我想removeChild與visible差別在於一個會被GC回收 05/27 19:09
31F:→ sayaku0210:但GC何時來回收掉沒法決定~除非用hack方式吧 05/27 19:11
32F:推 emily114005:removeChild跟visible都不會被GC回收喔 05/29 00:34
33F:→ emily114005:=null才會 05/29 00:35
34F:推 cjcat2266:回樓上,其實不一定喔,會不會被GC回收 05/29 00:45
35F:→ cjcat2266:一切看這個物件是不是orphan,意即有沒有被reference到 05/29 00:46