Flash 是否有任何javascript或swf来控制外部as2 swf上的声音
我有一个swf文件,可以播放一些声音(flash游戏),不幸的是没有内置静音功能。我没有fla文件,因此无法更改或添加静音按钮 swf是通过嵌入src/swfobject.js实现的 有没有办法使这个外部swf文件静音?Flash 是否有任何javascript或swf来控制外部as2 swf上的声音,flash,actionscript-2,mute,audio-player,Flash,Actionscript 2,Mute,Audio Player,我有一个swf文件,可以播放一些声音(flash游戏),不幸的是没有内置静音功能。我没有fla文件,因此无法更改或添加静音按钮 swf是通过嵌入src/swfobject.js实现的 有没有办法使这个外部swf文件静音? 可能通过外部JS函数或其他swf文件来控制game.swf?game.swf是AS2编译的。如果您没有访问AS2 swf源代码的权限,那么我不相信有直接的方法可以做到这一点,但是您可以通过创建自己的wrapper.swf来解决问题,在其中加载game.swf。然后,这个wrap
可能通过外部JS函数或其他swf文件来控制game.swf?game.swf是AS2编译的。如果您没有访问AS2 swf源代码的权限,那么我不相信有直接的方法可以做到这一点,但是您可以通过创建自己的wrapper.swf来解决问题,在其中加载game.swf。然后,这个wrapper.swf可以控制game.swf中的全局声音,并可以向Javascript打开方法,从中可以控制声音 我建议您在AS3中制作包装,这样做会更容易。相比之下,AS2是可怕的 我在下面放了一些加载外部swf的基本代码,用一个简单的按钮切换包装器中的所有声音,包括加载的swf
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();
}
好的,谢谢你的帮助,因为我不是flash程序员,你知道一个好的源代码,我可以在那里找到这种包装器的更多细节吗?@Sascha没问题,我已经用一些示例代码扩展了上面的答案。请注意,这不会将swf添加到舞台上,只会从内存中播放。@Sascha上述操作是否解决了您的问题,或者您是否需要进一步的帮助?