1
|
Steven Mercatante Dimitri Kopriwa · 技术社区 · 14 年前 |
![]() |
1
2
如果在同一层上有两个具有不同剪辑的帧,则每次该帧“进入”时,都会创建该剪辑。当它“离开”时,夹子会被移除,但它仍然会保留在周围,不会被垃圾收集。所以下次帧进入不同的剪辑时,它会被“创建”并得到自己的侦听器。您最好的办法是在更改帧时删除侦听器。我通常通过让一个听众
你也可以尝试“弱听众”:
“true”使链接“弱”,因此如果对象被移除,垃圾收集器可以将其拾取。但我不会完全依赖这个。最好手动删除引用,这样您就可以确定了。 当然,这个答案假设很多。如果您发布代码/屏幕截图/flas以更好地诊断,这将很有帮助。 |
![]() |
2
2
如果没有看到代码或者不知道你在听什么事件,不知道是谁/是什么激发了代码,就很难确定。 但是,我的猜测是movieclips没有被收集(这不一定是内存泄漏!)所以,他们还活着,还在踢。可以说,您应该有一个方法将它们设置为“空闲”状态。也就是说,删除监听器、停止计时器等。其目的是使对象处于不运行任何代码的状态。 movieclips和其他显示对象的一个简单方法,通常已经足够好了,就是监听添加到\阶段的内容,并从\阶段事件中删除。这里的想法是当你的对象被添加到舞台上时“激活”,在你的情况下,当你达到游戏类的第2帧时,它会“停用”,当它被移除时,也就是当你回到第1帧时。 沿着这些线的东西:
检查跟踪是否正常工作。你应该看到“init”被追踪出来,然后“mainloop”,只要你停留在第2帧,当你回到第1帧时“销毁”。mainloop”应该在此时停止跟踪。 除此之外,您可能还需要检查是否没有内存泄漏(事实上,您有7个实例并不一定意味着您有一个泄漏;但在某些情况下,如果GC运行,则至少应释放其中一些实例;如果从未发生这种情况,则是泄漏的症状;尝试强制GC查看活动实例的数量是否下降;如果不是,很可能是你漏了。 |
![]() |
nabster023 · 拉伸和旋转电影剪辑而不失真 6 年前 |
![]() |
Dimentio · 无限循环(动作脚本3) 7 年前 |
![]() |
AeroKLiam · AS3-使用组合框进行真/假测验 7 年前 |
![]() |
nabster023 · 自动检测AS3中输入文本字段的值 7 年前 |
![]() |
TheGunners · 查找两条圆弧之间的交点 7 年前 |