我有一个没有来源的文件-一个带有令人讨厌的声音简介的Flash header ,我需要使所有声音静音。没有资源,我只能做什么。我有一些as3代码,用于尝试将swf加载到静音中(在FlashDevelop中构建)。这是有问题的代码:
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.media.SoundTransform;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.media.SoundTransform;
public class Main extends Sprite
{
private var mLoader:Loader;
private var mc1:MovieClip;
private var holder:Sprite;
private var mSound:SoundTransform;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
var mRequest:URLRequest = new URLRequest('header_v8.swf');
mLoader = new Loader();
mLoader.load(mRequest);
holder = new Sprite();
holder.addChild(mLoader);
addChild(holder);
mSound = new SoundTransform(0);
holder.soundTransform = mSound;
}
}
}
上面的这段代码仍会播放音频,并且不会显示原始的瑞士法郎。因此,我的问题是:
如何将外部音频静音?
与直接查看时一样,我如何显示外部瑞士法郎?
任何建议或指向有用的示例/文档的指针将不胜感激
最佳答案
您是否正在调试播放器中运行它?查看您的代码,看来这行应该至少抛出一个错误:
holder.addChild(mLoader);
看来
holder
尚未初始化。也许您没有看到错误,这会破坏您的代码...使声音静音的代码看起来正确(尽管我没有尝试过)。也许您可以将其应用于holder
而不是内容本身。否则,您的 header swf可能会部分加载并开始播放声音,然后再调用完整的处理程序。另外SoundMixer允许您控制全局音量(我提到了它,因为尽管它可能不是理想的方式,但也许只在这里起作用)。
编辑
在我做的快速测试中,这有效地使加载的瑞士法郎静音:
var mRequest:URLRequest = new URLRequest('banner.swf');
var mLoader:Loader = new Loader();
mLoader.load(mRequest);
var holder:Sprite = new Sprite();
holder.addChild(mLoader);
addChild(holder);
var t:SoundTransform = new SoundTransform(0);
holder.soundTransform = t;
我删除了完整的处理程序,因为不再需要它。