본문 바로가기

개인프로젝트/리듬게임만들기

[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 3. 시작화면에 음악 삽입

mp3확장자로 된 배경음악파일을 준비합니다.

music폴더를 생성합니다.

음악파일을 재생할 수 있도록 JLayer라이브러리를 설치합니다.

package dynamic_beat;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;

import javazoom.jl.player.Player; // JLayer라이브러리

public class Music extends Thread { // 쓰레드를 상속
	
	private Player player; // 음악 라이브러리
	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()); // 음악 파일 실행
			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(); // 쓰레드 중지
	}
	
	@Override
	public void run() { // 쓰레드 상속시 사용
		try {
			do {
				player.play(); // 곡 무한반복 실행
			} while(isLoop);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
}

Music클래스

public DynamicBeat() {
		setTitle("Dynamic Beat");
		setSize(Main.SCREEN_WHIDTH, Main.SCREEN_HEIGHT);
		setResizable(false);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
		introBackground = new ImageIcon(Main.class.getResource("../images/introBackground(Title).jpg")).getImage();
	
		Music introMusic = new Music("introMusic.mp3", true);
		introMusic.start();
	} // 게임 실행시 배경음악 무한반복 재생

Main클래스