是否有任何javascript或swf控制外部as2瑞士法郎的声音

时间:2015-09-08 07:23:01

标签: flash actionscript-2 mute audio-player

我有一个播放一些声音的swf文件(flash游戏),遗憾的是内置没有静音功能。我没有fla文件所以我无法更改或添加静音按钮。

swf是通过embed src / swfobject.js实现的 有没有办法静音这个外部swf文件? 也许通过外部JS函数或可以控制game.swf的附加swf文件? game.swf是AS2编译的。

1 个答案:

答案 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();
}