/** * Plays the current track at the given position. * * @param position the track position (in ms) * @param loop whether or not to loop the track */ public static void playAt(final int position, final boolean loop) { if (trackExists()) { setVolume(Options.getMusicVolume() * Options.getMasterVolume()); trackEnded = false; pauseTime = 0f; if (loop) player.loop(); else player.play(); if (position >= 0) player.setPosition(position / 1000f); } }
@Override public void enter(GameContainer container, StateBasedGame game) throws SlickException { super.enter(container, game); keyInput = new KeyInput(); world = new World(this); world.init(); // TODO: Musicクラスの利用 music.setPosition(0); music.play(); music.loop(); // ゲーム中に動的に曲を変えたい場合 // このBasicGameStateクラスが持つクラス // 今回で言えば,Battleクラスが持つWorldクラスに, // Battleクラスの参照を渡しておき, // MusicChangeメソッドなどを作成し,呼び出させるという方法がある. // 他にも,ShootingGameクラスなどのStateBasedGameクラスに音楽管理クラスを // 持たせ,そこで管理するという方法もある. }
/** * Seeks to a position in the current track. * * @param position the new track position (in ms) */ public static boolean setPosition(int position) { return (trackExists() && position >= 0 && player.setPosition(position / 1000f)); }