2014-11-19 3 views
0

음악을 시작할 때 앱이 있습니다. 음악의 길이는 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

Player 객체는 한 번 음악을한다. 답장하는 방법 중 하나는 midiPlayer.setLoopCount(10);에 전화를 걸어 10 번 재생하도록하는 것입니다. 반복 작성자 :

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

그 일을 아주 나쁜 방법입니다 루프의 세 번째 방법, 당신이 의도하지 않게 여기를 수행 한 방법입니다 : 루프의 또 다른 방법은 PlayerListener를 구현하고이 코드를 추가하는 것입니다 루프 내에서 midiPlayer.start();로 전화하십시오. ;-) 여기 JavaME 음악을 연주에 대한

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) { 
    }; 
    } 
} 

더 유용한 정보 : http://www.indiegamemusic.com/help.php?id=1

+0

예. 한번 재생하기 위해 setLoopCount (1)를 추가했습니다. 끝으로 루프에서 midiPlayer.start를 제거했습니다. –

+0

음악 파일을 한 번만 재생하려면'setLoopCount()'가 필요하지 않습니다. –