2012-01-09 2 views
0

У меня есть эта проблема, когда я пытаюсь затухать в звуке с помощью функции ниже. Это просто не работает, и я не могу понять, где проблема. Я хотел бы затухать в звуке, но ничего не происходит. Я ценю любой намек, который я могу решить, чтобы решить эту проблему. Заранее спасибо.выцветание звук не работает

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

dispatchEvent(new CustomEventSound(CustomEventSound.PLAY_SOUND, Main.SOUND_AMBIENT, false, true, false, 999999, 0, 0, setSoundVolume)); 

это функция для воспроизведения звука. функция остановки почти идентична этой функции.

public function playSound(soundName:String, isSoundTrack:Boolean = false, fadeIn:Boolean = false, fadeOut:Boolean = false, 
           loops:int = 1, offset:Number = 0, volume:Number = 1):void { 

     if (fadeIn) { 
      tempSoundTransform.volume = 0; 
     } else { 
      tempSoundTransform.volume = volume; 

     } 
     tempSound = sounds[soundName]; 

     if (isSoundTrack) { 
      if (soundTrackChannel != null) { 
       soundTrackChannel.stop(); 
      } 

      soundTrackChannel = tempSound.play(offset, loops);        
      soundTrackChannel.soundTransform = tempSoundTransform; 

      if (fadeIn) { 
       for (var i:int = 0; i < fadeInInc; i++) { 
        tempSoundTransform.volume += 1/fadeInInc; 
        soundTrackChannel.soundTransform = tempSoundTransform; 
        if (tempSoundTransform.volume >= 1) { 
         tempSoundTransform.volume = 1; 

        } 
       } 
      } 

     } else { 
      soundChannels[soundName] = tempSound.play(offset, loops); 
      soundChannels[soundName].soundTransform = tempSoundTransform; 

      if (fadeIn) { 
       for (var i:int = 0; i < fadeInInc; i++) { 

        tempSoundTransform.volume += 1/fadeInInc; 
        soundChannels[soundName].soundTransform = tempSoundTransform; 
        if (tempSoundTransform.volume >= 1) { 
         tempSoundTransform.volume = 1; 

        } 

        trace("tempSoundTransform.volume " + tempSoundTransform.volume); 
       } 
      } 

     } 

    } 
+0

Не знаете, как это работает. Я предполагаю, что вы вызываете функцию, основанную на первом параметре в событии (в данном случае CustomEventSound.PLAY_SOUND) и передавайте остальные параметры. Но кроме первого у вас есть 8 параметров, а для функции playSound требуется только 7, какой из них вы используете? – 3vilguy

+0

Да. В параметрах произошла ошибка, и я исправил ее. Теперь они совпадают, но он все еще не исчезает. – drpelz

ответ

3

Я думаю, что ваша проблема вызвана заявлениями «для». Программа будет ждать, пока инструкция будет завершена, и после этого значения будут установлены. Если вы хотите увеличить объемное значение параллельно, вы должны сделать это на событии ENTER_FRAME или попробуйте Sounds fade in/out with ActionScript 3

+0

Хм ... моя первоначальная мысль заключалась в том, что он начал воспроизводить звук, и я должен затушить свой звук с помощью заявления и применить его в каждом цикле к моему тому. Я проследил объем и «затухает», т. Е. Увеличивает объемное значение в каждом кадре. Но вы ничего не слышите. Мой звук, который является циклом, очень короткий, т. Е. Меньше секунды. Это вызывает проблему? – drpelz

+2

Это не главное. Проведите несколько тестов. Добавить TextField в этап и выполнить оператор цикла 'for (var i: int = 0; i <10000000; i ++) { trace (i); txtFld.text = i; } ' и скажите, если вы можете видеть в текстовом поле, что числа увеличиваются ... – 3vilguy

+0

Проблема решена. :) Решение: [ссылка] http://www.zedia.net/2008/fading-out-volume-using -tweenlite/комментарий-страничный-1/# комментарий-5220 – drpelz

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