我有一个播放一些声音的swf文件(flash游戏),遗憾的是内置没有静音功能。我没有fla文件所以我无法更改或添加静音按钮。
swf是通过embed src / swfobject.js实现的 有没有办法静音这个外部swf文件? 也许通过外部JS函数或可以控制game.swf的附加swf文件? game.swf是AS2编译的。
答案 0 :(得分:0)
如果您无法访问AS2 swf源,那么我不相信有直接的方法可以执行此操作,但您可以通过创建自己的wrapper.swf来执行解决方法,在其中加载game.swf。然后,这个wrapper.swf可以控制game.swf中的全局声音,并且可以打开Javascript的方法来控制声音。
我建议在AS3中制作你的包装器,好吧,它会变得更容易。相比之下,AS2很可怕。
我在下面放了一些加载外部swf的基本代码,只需一个简单的按钮切换包装器内的所有声音 - 包括加载的swfs。
import flash.text.TextField;
import flash.media.SoundMixer;
var req:URLRequest = new URLRequest("playsound.swf");
var loader:Loader = new Loader();
loader.load(req);
var btn:TextField = new TextField();
btn.text = "Toggle Sound";
btn.mouseEnabled = true;
btn.buttonMode = true;
btn.addEventListener(MouseEvent.CLICK, handleClick);
this.addChild(btn);
var amMuted:Boolean = false;
function handleClick(e) {
if (amMuted) {
amMuted = false;
SoundMixer.soundTransform = new SoundTransform(0);
} else {
amMuted = true;
SoundMixer.soundTransform = new SoundTransform(1);
}
}
你也可以打电话:
SoundMixer.stopAll()
如果你想静音一切。
如果你想测试原理,这里有一个示例AS2 swf来播放一般的循环声音:
song = new Sound();
song.loadSound("http://users.skynet.be/fa046054/home/P22/track39.mp3", true);
song.onLoad = function( success:Boolean ) {
if (success) {
song.start();
} else {
// fail
}
}
// replay
song.onSoundComplete = function() {
song.start();
}