Flash 使用unloadAndStop()方法卸载swf,但视频声音仍然可以听到

Flash 使用unloadAndStop()方法卸载swf,但视频声音仍然可以听到,flash,actionscript-3,actionscript,flash-cs4,Flash,Actionscript 3,Actionscript,Flash Cs4,我已经尝试了很多方法来卸载我的swf,但都没有用,即使在加载swf后,我老旧的swf中的视频声音仍会继续播放 我创建了一个通用加载器,如下所示: var loader:Loader = new Loader(); loader.load(new URLRequest("video.swf")); //assign SWF url to loader mov_contentLoader.addChild(loader); //add loaded content to movi clip lo

我已经尝试了很多方法来卸载我的swf,但都没有用,即使在加载swf后,我老旧的swf中的视频声音仍会继续播放

我创建了一个通用加载器,如下所示:

var loader:Loader = new Loader();
loader.load(new URLRequest("video.swf")); //assign SWF url to loader
mov_contentLoader.addChild(loader); //add loaded content to movi clip
loader.unloadAndStop(); //unload all content, do some garbage cleanup
mov_contentLoader.removeChildAt(0); //just to be safe, a second layer of reassurance ??
然后,我将各种swf加载到名为mov_contentLoader的电影剪辑中,例如,视频swf加载如下:

var loader:Loader = new Loader();
loader.load(new URLRequest("video.swf")); //assign SWF url to loader
mov_contentLoader.addChild(loader); //add loaded content to movi clip
loader.unloadAndStop(); //unload all content, do some garbage cleanup
mov_contentLoader.removeChildAt(0); //just to be safe, a second layer of reassurance ??
然后,我有一个通用的“退出”按钮,基于应用程序的状态,某些窗口关闭,swf卸载等。对于我的video.swf文件,单击退出按钮时,我调用unloadAndStop();方法,如下所示:

var loader:Loader = new Loader();
loader.load(new URLRequest("video.swf")); //assign SWF url to loader
mov_contentLoader.addChild(loader); //add loaded content to movi clip
loader.unloadAndStop(); //unload all content, do some garbage cleanup
mov_contentLoader.removeChildAt(0); //just to be safe, a second layer of reassurance ??
SWF是卸载的,但为了我的生命,我不能让声音停止!我甚至求助于在video.swf上添加舞台监听器来收听退出状态,但这仍然无法阻止视频声音

如果我再次加载video.swf并播放不同的视频,这两个音轨会在彼此的顶部播放

任何指导,一如既往,都会得到极大的接受和赞赏


西蒙经过大量研究,我已经解决了这个问题。希望这能让某人的生活更轻松,问题是:

unloadAndStop()unloadAndStop()功能不能停止所有声音

解决方案是什么?我将一个事件侦听器连接到我的加载程序,在成功卸载内容后,我调用了
SoundMixer.stopAll()功能,确保没有声音进行播放!然而,这并不意味着如果你一直有周围的背景声音,它们也会停止。您可以更进一步,获取环境声音的当前时间,然后从该时间点立即“重新启动”它们

我的简单通风口侦听器如下所示:

myloader.contentLoaderInfo.addEventListener(Event.UNLOAD, cleanUp);

function cleanUp(e:Event):void{
   SoundMixer.stopAll(); //stop all sounds...
}
this.addEventListener(Event.REMOVED_FROM_STAGE, stopSound)

function stopSound(e:Event):void
{
    my_flvPlayer.stop();
}
我相信这会有帮助!它有点“黑”,但它做得很好

亲切问候,,
西蒙经过大量研究,我已经解决了这个问题。希望这能让某人的生活更轻松,问题是:

unloadAndStop()unloadAndStop()功能不能停止所有声音

解决方案是什么?我将一个事件侦听器连接到我的加载程序,在成功卸载内容后,我调用了
SoundMixer.stopAll()功能,确保没有声音进行播放!然而,这并不意味着如果你一直有周围的背景声音,它们也会停止。您可以更进一步,获取环境声音的当前时间,然后从该时间点立即“重新启动”它们

我的简单通风口侦听器如下所示:

myloader.contentLoaderInfo.addEventListener(Event.UNLOAD, cleanUp);

function cleanUp(e:Event):void{
   SoundMixer.stopAll(); //stop all sounds...
}
this.addEventListener(Event.REMOVED_FROM_STAGE, stopSound)

function stopSound(e:Event):void
{
    my_flvPlayer.stop();
}
我相信这会有帮助!它有点“黑”,但它做得很好

亲切问候,,
Simon

处理此问题的适当方法是将销毁函数编程到任何已加载的内容中,然后在卸载该内容之前调用它。在销毁功能中,加载的swf应负责其自身与以下方面有关的业务:

  • 停止播放声音
  • 关闭任何打开的流(如流式视频)
  • 在它的时间表上叫停
  • 等等

SoundMixer.stopAll()绝对不是合适的解决方案。相反,如果你是设置“可接受”的用户体验参数的人,但如果你正在编写一个第三方swf,将加载到其他人的应用程序中,你肯定会负责清理你自己的声音混乱,SoundMixer将杀死的不仅仅是你的声音,但是装载机发出的声音,这肯定会激怒你的主人

处理此问题的适当方法是将destroy函数编程到任何已加载的内容中,然后在卸载该内容之前调用它。在销毁功能中,加载的swf应负责其自身与以下方面有关的业务:

  • 停止播放声音
  • 关闭任何打开的流(如流式视频)
  • 在它的时间表上叫停
  • 等等

SoundMixer.stopAll()绝对不是合适的解决方案。相反,如果你是设置“可接受”的用户体验参数的人,但如果你正在编写一个第三方swf,将加载到其他人的应用程序中,你肯定会负责清理你自己的声音混乱,SoundMixer将杀死的不仅仅是你的声音,但是装载机发出的声音,这肯定会激怒你的主人

侦听Event.UNLOAD,然后调用提取“SoundMixer.stopAll()”函数的函数的eventlistener是一个不错的解决方法。如果您从容器swf所在的域以外的域加载swf,则此操作不起作用。我很确定这会触发沙盒破坏。 我没有解决这个问题的方法,最好的方法就是上面提到的scriptocalypse

但我现在的处境是,我在不同的域上,对SWF文件没有控制权,所以我不能将“销毁”函数放入其中。
我快发疯了。

侦听Event.UNLOAD然后调用提取“SoundMixer.stopAll()函数”的函数的eventlistener是一个不错的解决方法。如果您从容器swf所在的域以外的域加载swf,则此操作不起作用