退出框架时卸载 swf
Posted
技术标签:
【中文标题】退出框架时卸载 swf【英文标题】:Unloading an swf upon exiting frame 【发布时间】:2012-12-03 06:08:49 【问题描述】:我进行了四处搜索,但无法将找到的任何内容应用到我的代码中以使其正常工作。
我正在构建一个网站,导航到每个页面(框架)都会加载带有内容的外部 swf。理想情况下,我希望在离开框架时卸载内容,以便我可以加载新的 swf。 这是我用于加载 swf 的 as3:
var swfLoader:Loader = new Loader();
stage.addChild(swfLoader); swfLoader.x = 0; swfLoader.y = 100;
var bgURL:URLRequest = new URLRequest("gallery_swf/reg_slide.swf");
swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadProdComplete);
swfLoader.load(bgURL);
函数 loadProdComplete(e:Event):void
trace("文件加载");
【问题讨论】:
【参考方案1】:简单使用:
swfLoader.unload();
卸载 swf。
【讨论】:
在离开框架的事件处理程序中。 好的,这样可以在离开框架时卸载 swf,但不幸的是出现了另一个问题。当我导航回该框架时,swf 不会重新加载,就像我需要的那样。似乎卸载程序否定了要求它加载 swf 的操作脚本? 这可能对你有用:beautifycode.com/the-finer-art-of-loading-1-simple-load-unload【参考方案2】:卸载外部 swf 最安全的方法是使用加载程序的 unloadAndStop 方法。如果您的目标是 Flash Player 9,您将无法使用此方法,而必须使用 unload()
。请注意,unload()
需要额外的手动工作以确保正确卸载所有内容。
引用链接:
虽然 Loader.unload 删除了 Loader 对象的子对象,但卸载的对象仍将在后台运行,直到它被垃圾收集器实际处理掉。由于垃圾收集器不会处理所引用的对象,因此“卸载”的内容可能永远不会被删除(例如,事件侦听器可以引用该对象)。
【讨论】:
谢谢,这行得通,但遇到了与下面解释的相同的问题 - “好的,所以在导航离开框架时卸载 swf 的工作,但不幸的是出现了另一个问题。当我导航回到那个框架,swf 不会像我需要的那样重新加载。似乎卸载程序否定了要求它加载 swf 的操作脚本?"以上是关于退出框架时卸载 swf的主要内容,如果未能解决你的问题,请参考以下文章