2013-04-26 3 views
0

У меня есть несколько дорожек аудио, которые в душе. Я бы хотел, чтобы с самого начала включался один «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); 

Или, чтобы быть более эффективным с памятью, вы можете сделать это:

Отнесите строки:

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

и изменить его на:

var myChannel3:SoundChannel; 

Это делает так что вы на самом деле не начать звук сразу, а просто создать указатель на него (вар)

Затем в своей очереди на блок справа после того, как // turn sound on:

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

Это проверяет, если вы начали звук все же, если нет, то он создает/запускает звук

вы также хотите изменить эту строку в ваш звуковой от блока:

myChannel3.soundTransform = myTransform3; 

к этому

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

Таким образом, если кнопка выключения нажата до того, как на кнопку, он не выдаст ошибку.

+0

Спасибо! Я должен буду опустить голову. Но не отбрасывает «.play (0,1000)» из var myChannel3: SoundChannel; отключите этот трек и, следовательно, выложите его из слова «TitleMusic»? – floatingwoo

+0

Да, я пропустил часть о необходимости синхронизировать с остальными – BadFeelingAboutThis

+0

Вам придется либо пойти с простой одной строкой (в верхней части моего ответа), либо перезапустить основной звук, когда остальные будут запущены, чтобы они синхронизируются, ИЛИ пишут какой-то скрипт, который ждет следующего цикла вашего основного звука, прежде чем запускать остальные. – BadFeelingAboutThis

Смежные вопросы