2012-01-09 57 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),並傳遞params的其餘部分。但除了第一個有8個參數,playSound功能只需要7個,你正在使用哪一個? – 3vilguy 2012-01-09 23:03:30

+0

是的。參數出錯了,我糾正了它。現在他們匹配,但它仍然不褪色。 – drpelz 2012-01-10 01:45:04

回答

3

我認爲你的問題是由「for」語句引起的。程序將等待while語句結束並在此之後設置值。如果您想要平行增加音量值,您應該在ENTER_FRAME事件上做或嘗試Sounds fade in/out with ActionScript 3

+0

嗯......我最初的想法是開始播放聲音,我必須用for-statement來淡化我的聲音,並在每個週期中將其應用於我的音量。我追蹤了音量並且「淡化」了,即增加了每一幀的音量值。但你什麼都聽不到。我的聲音循環非常短,即不到一秒鐘。這是造成這個問題嗎? – drpelz 2012-01-10 01:42:25

+2

這不是重點。做一些測試。添加TextField以進行階段並執行循環語句 for(var i:int = 0; i <10000000; i ++) { trace(i); txtFld.text = i; }' 並告訴我,如果你可以在文本框中看到數字正在增加... – 3vilguy 2012-01-10 09:54:08

+0

問題已解決。:)解決方案:[link] http://www.zedia.net/2008/fading-out-volume-using -tweenlite /評論頁-1 /#評論 - 5220 – drpelz 2012-01-11 02:53:46