2013-04-26 74 views
0

我有幾個sinc音軌。我想從一開始就打開一個「TitleMusic」,並允許用戶打開和關閉其他軌道。我的代碼就像現在一樣,「TitleMusic」從一開始就播放所有其他曲目。我需要切換「track8」和所有其他曲目(未顯示),以便在開始時關閉。這花了我很長時間纔得到這一點,我只需要一些幫助即可解決它。由於在Actionscript 3中切換靜音聲​​音

import flash.media.Sound; 
import flash.media.SoundChannel; 

var soundOn:Boolean = true;//This music is ON when we start 
var myMusic:TitleMusic = new TitleMusic(); 
var myChannel1:SoundChannel = myMusic.play(0,1000);//endless loop, in effect 

var soundOn3:Boolean = true; //music is ON when we start 
var myMusic3:track8 = new track8(); 
var myChannel3:SoundChannel = myMusic3.play(0,1000); // endless loop, in effect 
var myTransform3:SoundTransform; 

mySoundButton3.addEventListener(MouseEvent.CLICK,toggleSound3); 
mySoundButton3.buttonMode = true; 
mySoundButton3.mouseChildren = false; 

function toggleSound3(e:MouseEvent) 
{ 
if(soundOn3) 
{ 
// turn sound off 

myTransform3 = new SoundTransform(); 
myTransform3.volume = 0; // silent 
myChannel3.soundTransform = myTransform3; 
soundOn3 = false; 
mySoundButton3.myButtonText.text = "click to turn sound ON"; 
} 
else // sound is off 
{ 
// turn sound on 

myTransform3 = new SoundTransform(); 
myTransform3.volume = 1; // full volume 
myChannel3.soundTransform = myTransform3; 
soundOn3 = true; 
mySoundButton3.myButtonText.text = "click to turn sound OFF"; 
} 

} 

回答

0

你不能只是把此行mySoundButton3.mouseChildren = false;之後:

toggleSound3(null); 

或者是內存更有效,你可以這樣做:

藉此line:

var myChannel3:SoundChannel = myMusic3.play(0,1000); 

並將其更改爲:

var myChannel3:SoundChannel; 

這使得這樣你就不會真正開始的聲音馬上,只是創建指向它(VAR)

然後,輪到你的塊權// turn sound on後:

if(!myChannel13){ 
    myChannel3 = myMusic3.play(0,1000); 
} 

這將檢查,看看你是否已經開始了聲音的是,如果不是,它會創建/啓動聲音

您還需要改變這一行你的聲音關塊:

myChannel3.soundTransform = myTransform3; 

這個

if(myChannel13){ 
    myChannel3.soundTransform = myTransform3; 
} 

這樣一來,如果關閉按鈕被點擊之前的按鈕,它不會引發錯誤。

+0

謝謝!我將不得不讓我的頭靠近它。但不會從var myChannel3:SoundChannel中刪除「.play(0,1000)」;關閉該曲目,並因此將其與「TitleMusic」曲目的正弦曲目相提並論? – floatingwoo 2013-04-26 18:39:25

+0

是的,我錯過了需要與其他人同步的部分 – BadFeelingAboutThis 2013-04-26 19:15:25

+0

您可能不得不使用簡單的一行(在我的答案的頂部),或者在其他人開始時重新開始您的主要聲音,所以他們或者寫一些腳本,等到下一個主聲音循環後再啓動其他聲音 – BadFeelingAboutThis 2013-04-26 19:17:06