2013-04-26 123 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

相关问题