我正在制作一个时间短的游戏,我希望主题音乐的确切长度。
静音使用音量控制效果很好,我可以使用最后一个位置变量暂停和恢复声音,然后从该位置再次播放主题。
然而,我注意到我暂停音量的次数越多,最后会切断部分歌曲,所以我会在关卡结束时留下几秒钟的沉默。
应用程序类是一个级别切换器,每个级别和对象都是它自己的类。声音也在他们自己的课堂上。主题下面的Sound Class中的一个变量。
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变量来访问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;
}
}
}
请记住暂停和取消暂停效果很好,但每次按下时似乎都会剪断几毫秒。任何想法为什么会这样?如果这就是它如何,有没有一种方法可以从最后一个位置变量减去一定的毫秒数?
答案 0 :(得分:0)
这个链接对我很有帮助,你可以从中找到答案。 http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d21.html