停止播放音乐

时间:2014-11-19 08:49:02

标签: loops java-me

我开始使用音乐应用。音乐的长度是23秒,但它的播放没有停止。音乐开始循环播放。如何在音乐长度结束时停止循环?

public void start() {
  try {
    InputStream is = getClass().getResourceAsStream("/a.mid");
    midiPlayer = Manager.createPlayer(is, "audio/midi");
  } catch (Exception e) {
  }
  z = true;
  Thread t = new Thread(this);
  t.start();
}

public void stop() {
  z = false;
}

public void run() {
  Graphics g = getGraphics();
  while (z) {
    draw(g);
    inputKey();
    try {
      Thread.sleep(200);
      midiPlayer.start();
    } catch (Exception e) {
    };
  }
}

1 个答案:

答案 0 :(得分:0)

Player对象只播放一次音乐,除非您指示它重播。告诉它回复的一种方法是致电midiPlayer.setLoopCount(10);让它播放10次。 另一种循环方式是实现PlayerListener并添加以下代码:

public void playerUpdate(Player player, String event, Object eventData) {
  if (event.equals(PlayerListener.END_OF_MEDIA)) {
    try {
      player.start();
    } catch (Exception e) {}
  }
}

第三种循环方式,这是一种非常糟糕的方法,就是你在这里无意中完成它的方式:在你的循环中反复调用midiPlayer.start();。 ; - )

public void start() {
  try {
    InputStream is = getClass().getResourceAsStream("/a.mid");
    midiPlayer = Manager.createPlayer(is, "audio/midi");
  } catch (Exception e) {
  }
  z = true;
  Thread t = new Thread(this);
  t.start();
}

public void stop() {
  z = false;
}

public void run() {
  Graphics g = getGraphics();
  midiPlayer.start();
  while (z) {
    draw(g);
    inputKey();
    try {
      Thread.sleep(200);
    } catch (Exception e) {
    };
  }
}

有关使用JavaME播放音乐的更多有用信息: http://www.indiegamemusic.com/help.php?id=1