作者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