我在将一个步行声音循环到我的一个物体时遇到了问题。我的游戏运行在不同的状态,我希望声音循环状态" RUNNING",问题是wav听起来像锯。一位朋友给我一个如此解决方案,在我创建了一个全局" long loopWalkSound = -1"之后使用以下代码。在我的渲染类中:
if (myWorld.isRunning()) {
if (loopWalkSound == -1) {
loopWalkSound = AssetLoader.walk.loop();
}
drawGame(runTime);
drawGameButtons();
drawScore();
}
使用此代码使wav听起来正确,但它开始播放的那一刻并没有停止。我的意图是让wav只能在第一个条件状态下进行比赛,并在离开这个状态时停止,或者当比赛的声音关闭时根本不进行比赛(我没有为这个特定的实现wav但是只是为了给你一个想法)。有人可以帮忙搞清楚吗?
答案 0 :(得分:0)
将其包裹在布尔检查中,这样就不会在每一帧上重新启动它。在下面,将wantWalkLoopToBePlaying
更改为确定是否要播放声音的任何条件。例如:boolean wantWalkLoopToBePlaying = state == RUNNING;
。
if (!walkLoopIsPlaying && wantWalkLoopToBePlaying) {
loopWalkSound = AssetLoader.walk.loop();
if (loopWalkSound != -1) walkLoopIsPlaying = true;
} else if (walkLoopIsPlaying && !wantWalkLoopToBePlaying) {
AssetLoader.walk.stop();
walkLoopIsPlaying = false;
}