在Actionscript 3中切换静音

时间:2013-04-26 17:57:04

标签: actionscript-3

我有几个声音的音轨。我想从一开始就有一个“TitleMusic”,并允许用户打开和关闭其他轨道。我的代码现在有“TitleMusic”从一开始就播放所有其他曲目。我需要切换“track8”和所有其他曲目(不显示),以便它们在开始时关闭。这花了我很长时间才达到这一点,我只是需要一些帮助来扭转它。感谢

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";
}

}

1 个答案:

答案 0 :(得分:0)

你不能在mySoundButton3.mouseChildren = false;之后把这条线放好:

toggleSound3(null);

或者,为了提高记忆效率,你可以这样做:

采取这一行:

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;
}

这样,如果在开启按钮之前点击关闭按钮,它就不会抛出错误。