2011-11-18 30 views
1

我正在加工as3播放器,它加載swf像視頻/章節,裏面我有圖像和一個級別,其中一個sound starts to play at frame 1停止加載瑞士法郎的時間軸聲音

我想停止加載swf的聲音,當我與以前或以後加載的文件,但沒有改變它似乎工作。

我已經試過這樣:

loaded_swf.stop(); 
SoundMixer.stopAll(); 
media_container.removeChild(loaded_swf); 

我也試過這樣:

loaded_swf.stop(); 
var snd_transform:SoundTransform = SoundMixer.soundTransform; 
snd_transform.volume = 0; 
SoundMixer.soundTransform = snd_transform; 
SoundMixer.stopAll(); 
media_container.removeChild(loaded_swf); 

這:

loaded_swf.stop(); 
var snd_transform:SoundTransform = loaded_swf.soundTransform; 
snd_transform.volume = 0; 
swf.soundTransform = snd_transform; 
SoundMixer.stopAll(); 
media_container.removeChild(loaded_swf); 

時間軸聲音與...合作請注意0​​方法。
確實存在着一些方式來解決這個問題呢?

回答

0

這裏有一個小的遞歸函數,將關閉所有音頻的一個影片剪輯。如果你使用時間軸的聲音,這應該關閉它們。

public function stopAllSounds(mc:MovieClip):void 
{ 
    var mute:SoundTransform = new SoundTransform(0.0); 
    mc.soundTransform = mute; 

    for (var i:int = 0; i < mc.numChildren; ++i) 
    { 
     var m:DisplayObject = mc.getChildAt(i); 
     if(m is MovieClip) stopAllSounds(m); 
    } 
} 
+1

的SoundTransform實際上是雪碧的屬性,所以你應該靜音每一個角色,你找到,但你只迭代電影剪輯的孩子。 – felipemaia

-1

編輯詹姆斯的答案,以確保真正的一切都停止(不只是影片剪輯):

public function stopAllSounds(sp:Sprite):void 
{ 
    var mute:SoundTransform = new SoundTransform(0.0); 
    sp.soundTransform = mute; 

    var mc : MovieClip = sp as MovieClip; 
    if(mc != null) 
    { 
     for (var i:int = 0; i < mc.numChildren; ++i) 
     { 
      var m:DisplayObject = mc.getChildAt(i); 
      if(m != null) stopAllSounds(m); 
     } 
    } 
} 
相關問題