我正在舞台上的 0 处加载一些 swf 文件。它们是我网站的页面。
要从一个页面更改为另一个页面,我使用 removeChildAt(0),然后我 addChildAt("page_title", 0)。
问题是 removeChild 不会从第一个加载的 swf 文件中删除函数(在卸载之前)。
那我怎么能停下来?
我必须使用其他方式来删除孩子吗?
谢谢!
我正在舞台上的 0 处加载一些 swf 文件。它们是我网站的页面。
要从一个页面更改为另一个页面,我使用 removeChildAt(0),然后我 addChildAt("page_title", 0)。
问题是 removeChild 不会从第一个加载的 swf 文件中删除函数(在卸载之前)。
那我怎么能停下来?
我必须使用其他方式来删除孩子吗?
谢谢!
假设您正在使用Loader 加载,您可以使用 unloadAndStop 方法。
更多信息在这里:
http://www.gskinner.com/blog/archives/2008/07/additional_info.html
在我看来,您实际上并没有删除它们。首先,从显示列表中删除某些内容只是视觉/交互更改。它仍在运行,直到您删除对它的任何引用,作为事件侦听器或 w/e,然后您必须将其设置为 null,以便垃圾收集将在下一个周期中获取它。
如果您使用的是 Flash Player 10,spender 是正确的,unloadAndStop 将为您工作,因为他们最近创建了它来解决您的问题。
我只是想我应该解释发生了什么,因为人们不仅应该知道修复,还应该知道事情发生的原因。
另一个建议,我不会将这些电影加载到舞台上,我会创建一个容器Sprite
/MovieClip
来保存它们,这样即使您稍后添加其他东西,它们也是分开的、干净的,并且易于通过它们的父级访问(imageContainer_mc
例如)。
或者,您可以将子影片加载到不同的 ApplicationDomain 中,以将加载的代码与您的主应用程序隔离开来。看一下flash.system.ApplicationDomain
类(它是Loader.load()
方法的参数)。