- 오디오 라이브러리(http://slick.cokeandcode.com/javadoc-util/org/newdawn/slick/openal/Audio.html)에 playAsSoundEffect()를 여러번 호출하면 여러번 음악 파일이 실행되는 것을 확인 함.
try {
// you can play wavs by loading the complete thing into
// a sound
wavEffect = AudioLoader.getAudio("WAV", ResourceLoader.getResourceAsStream("sound/Test.wav"));
} catch (IOException e) {
e.printStackTrace();
}
while (Keyboard.next()) {
if (Keyboard.getEventKeyState()) {
if (Keyboard.getEventKey() == Keyboard.KEY_T) {
// play as a one off sound effect
wavEffect.playAsSoundEffect(1.0f, 1.0f, false);
}
if (Keyboard.getEventKey() == Keyboard.KEY_G) {
wavEffect.stop();
}
}
}
- 위와 같은 방식으로 키보드를 통한 음악 실행과 정지가 가능하다....
- 근데 이렇게 하고 보니 기존에 했던 코드가 아무짝에도 쓸모 없다는 사실을 알았다. -_-;
public void init(InputStream filename) {
try {
// you can play oggs by loading the complete thing into
// a sound
oggEffect = AudioLoader.getAudio("OGG", filename); // java.lang.ArithmeticException: / by zero
oggEffect.playAsSoundEffect(1.0f, 1.0f, false);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// polling is required to allow streaming to get a chance to
// queue buffers.
SoundStore.get().poll(0);
}
- 왜 저기서 0으로 나눠서 문제가 된다는거지???????
박재민: 좀더 검색해보니까 길이가 짧은 스테레오 ogg파일은 문제가 있는듯 보임. 모노로 변환해보니깐 되더라;;
public void init(InputStream filename) {
URL file = null;
try {
file = new URL(filename);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
// you can play oggs by loading the complete thing into
// a sound
oggStream = AudioLoader.getStreamingAudio("OGG", file);
oggStream.playAsMusic(1.0f, 1.0f, true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// polling is required to allow streaming to get a chance to
// queue buffers.
SoundStore.get().poll(0);
}
- 위와 같이 바꾸었을 경우 getStreamingAudio()에 들어가는 인자가 String, String이 될 수 없고 URL로 바꾸어 주어야 함. 그래서 소리가 날 까 했는데 no protocol: assets/rpgvx_resources/Audio/SE/Cursor.ogg 이라는 아름다운 문자를 날려줌. -ㅅ-...
- 이 경우 file = new URL(filename); 를 file = new URL("file://" + filename);로 바꾸어 주면 소리가 날 것 처럼 사람들이 써 놨으나 실패. 그래서 절대 경로를 모두 적어주었지만 역시나 파일을 읽는데 실패했다.
public void init(InputStream filename) {
try {
// you can play oggs by loading the complete thing into
// a sound
oggStream = AudioLoader.getStreamingAudio("OGG", ResourceLoader.getResource(filename));
oggStream.playAsMusic(1.0f, 1.0f, true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// polling is required to allow streaming to get a chance to
// queue buffers.
SoundStore.get().poll(0);
}
- Test로 실행이 되었던 소스였으나, 여기선 java.io.BufferedInputStream.read(Unknown Source)라며 즐을 날려 준다 -_-.... 아니 왜!!!
- 맨 위 처음 Test한 방법과 같은 방법으로 시도 해 보았으나 소리가 안 나서 멘붕하고 있음