AS3 UILoader swf继续在后台播放

时间:2012-08-06 21:09:04

标签: actionscript-3 video flash uiloader

我有一个简单的可扩展广告,可以加载外部SWF文件。外部SWF文件包含嵌入的视频。

使用UILoader组件,我已经加载了SWF,将其添加到舞台上,视频显示并播放正常。

主要问题是我有一个关闭按钮,它应该卸载视频,并停止它,基本上返回到广告的默认状态。

要卸载SWF,我正在执行以下操作:

myUILoader.unload();
removeChild(myUILoader);

当我这样做时,视频和UILoader从屏幕上消失。但是,您仍然可以在后台听到声音,如果我再次加载SWF,它会在后台创建多个轨道。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

有几件事可能导致这种情况。一个是UILoader中的内容是将事件监听器添加到自身之外。您可以通过不允许它触及外部任何东西来解决此问题。我相信你可以把它放在自己的ApplicationDomain,SecurityDomain或两者中。有关详细信息,请参阅帮助。

如果这不可行,你可以试试SoundMixer.stopAll(),它会停止明显的症状,但不会修复你在这种情况下可能遇到的内存泄漏。

罗尼提到的另一种可能性是,你仍然可以在某个地方引用装载机的内容。如果你不清楚它,它将留在记忆中。

然而,还有另一个问题也可能导致这种情况,即如果电影中的导航跳过包含音频设置为“流”的MovieClip的帧,则MC将被创建但不完全实例化并将保留在内存中,无法对其进行任何控制或释放它。我不认为这是你的描述中发生的事情。如果是,则修复是为了确保您在前往另一帧的路上访问包含声音的帧,无论多么简短。这实际上是你可能想要考虑甚至没有声音的东西,因为它会在你跳过嵌套的MovieClip中的帧时发生(你除了你的swf之外你没有证据),并且随着时间的推移这会造成内存泄漏。