Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 是否有任何javascript或swf来控制外部as2 swf上的声音_Flash_Actionscript 2_Mute_Audio Player - Fatal编程技术网

Flash 是否有任何javascript或swf来控制外部as2 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

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

swf是通过嵌入src/swfobject.js实现的 有没有办法使这个外部swf文件静音?
可能通过外部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上述操作是否解决了您的问题,或者您是否需要进一步的帮助?