У меня возникли проблемы, связанные с ходячим звуком на одном из моих объектов. Моя игра работает в разных состояниях, и я хотел, чтобы звук зацикливался в состоянии "RUNNING", проблема заключалась в том, что wav звучало как пила. Друг дал мне такое решение, используя следующий код после того, как я создал глобальный "long loopWalkSound = -1" в моем классе рендеринга:
if (myWorld.isRunning()) {
if (loopWalkSound == -1) {
loopWalkSound = AssetLoader.walk.loop();
}
drawGame(runTime);
drawGameButtons();
drawScore();
}
Используя этот код, звук wav был правильно, но в тот момент, когда он начинает играть, он не останавливается. Мое намерение состояло в том, чтобы wav играл только в первом состоянии состояния и останавливался при выходе из этого состояния или вообще не играл, когда игровой звук отключен (что я еще не реализовал для этого конкретного wav, но только для того, чтобы дать вам представление), Может кто-нибудь помочь понять это?
Оберните его в логическую проверку, чтобы вы не перезапускали ее на каждом кадре. Ниже, change 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;
}
walk.stop()
когда вы измените состояние.