2015-09-08 45 views
0

我有一個播放一些聲音(flash遊戲)的swf文件,很遺憾沒有靜音功能。我沒有fla文件,所以我可以' t更改或添加靜音按鈕。是否有任何JavaScript或SWF來控制外部聲音as2 swf

swf是通過嵌入src/swfobject.js實現的 有沒有辦法讓這個外部swf文件靜音? 也許通過外部JS函數或其他可以控制game.swf的swf文件? game.swf被編譯爲AS2。

回答

0

如果您無法訪問AS2 swf源,那麼我不認爲有直接的方法可以做到這一點,但是您可以通過創建自己的wrapper.swf來在其中加載game.swf 。這個wrapper.swf然後可以控制game.swf中的全局聲音,並且可以從可以控制聲音的位置打開JavaScript的方法。

我會建議你在AS3中做你的包裝,好吧,它使得更容易。 AS2是比較可怕的。

我已經提出了一些基本代碼,加載一個外部的瑞士法郎,用一個簡單的按鈕來切換包裝內的所有聲音 - 包括加載的瑞士法郎。

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()

如果您想要靜音的一切

如果你想測試這裏的princple

是一個示例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(); 
} 
+0

確定感謝您的幫助,由於這樣的事實,我不是閃存編程,做ü知道良好的來源,我可以找到這種包裝的更多細節? – Sascha

+0

@Sascha沒問題,我用一些示例代碼擴展了上面的答案。請注意,這不會將swf添加到舞臺上,只是從內存中播放它。 – Visualife

+0

@Sascha是否已經解決了上述問題,或者您需要進一步的幫助? – Visualife