2013-02-26 4 views
0

У меня есть четыре разных трека (гитара, бас, барабаны, вокал) в музыкальном проигрывателе. Все они называются флажками для проверки/снятия отметки, какая из треков слышима в данный момент, и у меня также есть кнопка воспроизведения, чтобы начать. Поэтому, когда вы проверяете, например, вокал и гитару, я хочу услышать только эти два инструмента, бас и барабаны, которые просто приглушаются в фоновом режиме.Actionscript 3, несколько звуковых дорожек

Проблема в том, когда я начинаю с этих двух отмеченных ящиков, я не могу изменить другие поля во время игры, потому что статус статический и не динамически изменяется при попадании на ящики.

Просто отрывок из моего кода только с гитарой и вокалом для легкого понимания:

 var vocals:Sound = new Sound(); 
     var vocalsChannel:SoundChannel = new SoundChannel(); 
     var vocalsTransform = new SoundTransform(); 
     vocalsChannel.soundTransform = vocalsTransform; 
     vocals.load(new URLRequest("songsample.mp3")); 

     var guitar:Sound = new Sound(); 
     var guitarChannel:SoundChannel = new SoundChannel(); 
     var guitarTransform = new SoundTransform(); 
     guitarChannel.soundTransform = guitarTransform; 
     guitar.load(new URLRequest("funky.mp3")); 

     voc_mc.addEventListener(MouseEvent.CLICK, _selectedVoc); 
     git_mc.addEventListener(MouseEvent.CLICK, _selectedGit); 

     function _selectedVoc(e:MouseEvent):void 
     { 
      var bool:Boolean = e.target.selected; 

      if(bool) 
      { 
       vocalsTransform.volume = 1; 

      } 
      else 
      { 
       vocalsTransform.volume = 0; 

      } 
     } 


     function _selectedGit(e:MouseEvent):void 
     { 
      var bool:Boolean = e.target.selected; 

      if(bool) 
      { 
       guitarTransform.volume = 1; 

      } 
      else 
      { 
       guitarTransform.volume = 0; 


      } 
     } 

     play_mc.addEventListener(MouseEvent.CLICK, 
           function(evt:MouseEvent) 
     { 
      vocalsChannel = vocals.play(0,0,vocalsTransform); 
      guitarChannel = guitar.play(0,0,guitarTransform); 
     }) 

     stop_mc.addEventListener(MouseEvent.CLICK, 
           function(evt:MouseEvent) 
     { 
      vocalsChannel.stop(); 
      guitarChannel.stop(); 
     }) 

ответ

2

Вам нужно сбросить свойство SoundTransform на канале:

function _selectedVoc(e:MouseEvent):void 
    { 
     var bool:Boolean = e.target.selected; 

     if(bool) 
     { 
      vocalsTransform.volume = 1; 

     } 
     else 
     { 
      vocalsTransform.volume = 0; 

     } 
     vocalsChannel.soundTransform = vocalsTransform; 
    } 
+0

@MarcelaThanks очень много, это было тот совет, который мне нужен! – user2110830

+0

Рад, что я мог помочь. Если это ответит на ваш вопрос, обязательно выберите его в качестве ответа. – Marcela