作者ulong (ulong)
看板Flash
标题[问题] removeEventListener使用时机 怎麽用?
时间Thu Dec 17 23:09:06 2009
我的状况是
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
1F:推 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)
2F:推 cjcat2266:看来我们在讲的是不同事情,你把被监听的event类型写下 12/18 00:03
3F:→ 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)
4F:推 cjcat2266:其实,你就在b.swf该被丢掉的code处,下方加一行remove 12/18 00:17
5F:→ cjcat2266:这样就可以确定b.swf被移除的同时,listener也被remove 12/18 00:17
我在b.swf被移除的地方加
但是flash的compiler无法认得 moveGallery
因为程式码写在不同的.fla档案中
请问这有办法克服吗?
感谢你的热心回答
※ 编辑: ulong 来自: 220.139.15.72 (12/18 00:55)
6F:→ cjcat2266:那就是重要机制没有集中管理...感觉砍掉重练或许比较快 12/18 01:12
我不知道如何集中管理也
flash可以像c++一样使用解构子吗?
unload的时候自己解构掉一些resource
※ 编辑: ulong 来自: 220.139.15.72 (12/18 01:19)
7F:推 cjcat2266:那就是自己写destroy()的用意,要丢掉以前自行呼叫解构 12/18 01:50
8F:→ cjcat2266:Java也没有destructor,这种使用虚拟机器的语言 12/18 01:50
9F:→ cjcat2266:多半都是要自己写一个destroy(),然後自行呼叫 12/18 01:50
10F:推 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)
11F:→ aquarianboy:有,推EAS3 12/18 09:31
问题解决了 scars 建议的removeFromStage是一个可行的方法
当remove child时,会收到这个event
谢谢大家
※ 编辑: ulong 来自: 59.124.68.163 (12/21 20:29)