2014-01-20 69 views
0

我正在製作一個遊戲,它具有短暫的時間級別,我希望主題音樂是準確的長度。在暫停按鈕中使用SoundChannel.position會削減我的音頻。 AS3遊戲

靜音使用音量控制效果很好,我可以使用最後一個位置變量暫停和恢復聲音,然後再次從該位置播放主題。

但是我注意到,我暫停這個關卡的次數越多,這段關閉的歌曲就會截斷,所以我在關卡末尾留下了幾秒的沉默。

應用程序類是一個級別切換器,每個級別和對象是它自己的類。這些聲音也屬於他們自己的班級。主題Sound類下面的一個變量。

public var themeOne:Sound = new ThemeOne(); 
     public var themeOneChannel:SoundChannel = new SoundChannel(); 
     public var themeOneTransform:SoundTransform = new SoundTransform(0.1, 0.5); 
     public var themeOneLastPosition:Number = 0;  

在一級聲明_sounds變量來訪問聲音類。當我按P鍵時,_gamePause布爾值變爲true,並進入pauseScreen方法,該方法停止並記錄主題的位置,然後從該位置再次播放。

private var _sounds:Sounds = new Sounds(); 

... 

private function pauseScreen():void 
     { 
      if (_gamePause) 
      { 
       _pauseScreen.pauseScreen.visible = true; 
       this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); 
       _sounds.themeOneLastPosition = _sounds.themeOneChannel.position; 
       _sounds.themeOneChannel.stop(); 

      } 
      else 
      { 
       _pauseScreen.pauseScreen.visible = false; 
       this.addEventListener(Event.ENTER_FRAME, enterFrameHandler); 
       _sounds.themeOneChannel = _sounds.themeOne.play(_sounds.themeOneLastPosition); 
       _sounds.themeOneChannel.soundTransform = _sounds.themeOneTransform; 

       } 

      } 
     } 

記住停頓和取消暫停效果很好,但它似乎在每次按下時都會縮短一些毫秒。任何想法爲什麼發生這種情況?如果這是怎麼回事,是否有一種方法可以從最後的位置變量減去一定數量的毫秒來播放?

回答

相關問題