我正在製作一個遊戲,它具有短暫的時間級別,我希望主題音樂是準確的長度。在暫停按鈕中使用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;
}
}
}
記住停頓和取消暫停效果很好,但它似乎在每次按下時都會縮短一些毫秒。任何想法爲什麼發生這種情況?如果這是怎麼回事,是否有一種方法可以從最後的位置變量減去一定數量的毫秒來播放?