인트로 음악은 다음의 사이트에서 다운받았다. 저작권이 없는 mp3 파일을 다운받아야 한다. 구글에 no copyright 를 치고 원하는 mp3파일 다운받아도됨. 필자가 사용한 음악 파일은 아래에 첨부해놨다.
www.bensound.com/royalty-free-music/electronica
그리고 다운로드 된 mp3파일을 introMusic으로 파일명 설정하고 eclips 에서 Music pakage 생성하여 그 안에 copy 해주었다.
그리고 mp3파일을 자바에서 실행하려면 라이브러리를 따로 설치해줘야 하는데 javazoom.net 사이트가 사라져서 여기서 다운로드 받았다. (안들어가질 까봐 zip 파일도 아래에 첨부해놨다.)
sourceforge.net/projects/javalayer/support
다운로드 받으면 다음과 같이 jlayer1.0.1 이라고 뜨는데 이 파일이어야 한다.
압축을 풀어주면 다음과 같이 화면이 뜨는데 우리가 필요한 것은 jl1.0.1.jar파일이다.
해당 파일이 존재하는지 확인 후 eclipse로 가서 작업중인 프로젝트에 대고 마우스 우클릭 build Path -> Configure bulid Path 눌러준다.
여기서는 Add External JARs 눌러주고 jl1.0.1.jar 파일 선택하고 Apply 눌러 적용해주면 끝이다.
그리고 다음과 같이 Music 클래스 생성후 작성하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
package beat1;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import javazoom.jl.player.Player;
public class Music extends Thread { // 쓰레드 상속
private Player player; // 다운로드 받은 Jlayer 라이브러리
private boolean isLoop; // 음악을 꺼지도록 설정
private File file;
private FileInputStream fis;
private BufferedInputStream bis;
public Music(String name, boolean isLoop) { // 곡의 제목과 무한반복여부를 생성자로 받는다.
try { // 예외처리
this.isLoop = isLoop; // 변수 초기화
file = new File(Main.class.getResource("../music/" + name).toURI());
// music 폴더 안에 있는 해당 이름의 파일을 실행시킨다는 의미. toURI 해당파일의 위치를 가져올 수 있도록 설정
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis); // 해당파일을 버퍼로 읽어올 수 있게 설정.
player = new Player(bis);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public int getTime() { // 현재실행되고 있는 음악이 현재 어떤 위치에서 실해오디고 있는 지 알려줌.
if(player == null)
return 0;
return player.getPosition();
}
public void close() { // 사용자가 해당 곡의 재생을 멈추고 싶을때 안정적으로 빠져나갈 수 있게
isLoop = false;
player.close();
this.interrupt(); // interrupt : 해당 쓰레드를 중지상태로 만든다.
}
@Override
public void run() { // 쓰레드를 상속받으면 무조건 오버라이드
try {
do { // 내부에 곡을 실행하는 코드 작성 (위에코드 복사)
player.play();
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
player = new Player(bis);
} while (isLoop); // 반복문으로 true 값이면 무한반복하도록
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
|
cs |
DynamicBeat class 에도 생성한 Music 클래스 인스턴스 생성코드 추가
'Java > Swing 미니프로젝트' 카테고리의 다른 글
[JAVA Project] 미니 프로젝트 리듬게임 만들기 4 - 시작하기버튼, main곡화면설정 (0) | 2021.04.19 |
---|---|
[JAVA Project] 미니 프로젝트 리듬게임 만들기 3 - 메뉴바 만들기, 나가기 아이콘 생성, 아이콘 효과음 추가 (0) | 2021.04.15 |
[JAVA Project] 미니 프로젝트 리듬게임 만들기 1 - 창 생성과 배경화면 설정 (0) | 2021.04.15 |
댓글