我开始使用音乐应用。音乐的长度是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) {
};
}
}
答案 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