본문 바로가기

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

[내가 만든 프로젝트 코드 분석 | 리듬게임 만들기] 5. 화면전환

 

시작화면에서 메인화면으로 넘어갈수 있도록 화면전환 기능을 구현합니다.

포토샵을 통해 시작화면과 비슷한 이미지의 메인화면과 버튼 이미지를 만듭니다.

버튼이미지는 마우스가 올려지면 변경되도록 명도를 조절하여 두가지씩 준비합니다.

버튼이벤트를 통해 화면전환을 구현합니다.

backgrorund의 변수에 다른이미지를 넣어 화면 전환을 하도록 구현합니다.

public class DynamicBeat extends JFrame {
	
	private Image screenImage;
	private Graphics screenGraphic;
	
  // 시작하기,종료하기 버튼이미지 변수 추가
	private ImageIcon exitButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/exitButtonEntered.png"));
	private ImageIcon exitButtonBasicImage = new ImageIcon(Main.class.getResource("../images/exitButtonBasic.png"));
	private ImageIcon startButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/startButtonEntered.png"));
	private ImageIcon startButtonBasicImage = new ImageIcon(Main.class.getResource("../images/startButtonBasic.png"));
	private ImageIcon quitButtonEnteredImage = new ImageIcon(Main.class.getResource("../images/quitButtonEntered.png"));
	private ImageIcon quitButtonBasicImage = new ImageIcon(Main.class.getResource("../images/quitButtonBasic.png"));
	
	private Image background = new ImageIcon(Main.class.getResource("../images/introBackground(Title).jpg")).getImage();

    private JLabel menuBar = new JLabel(new ImageIcon(Main.class.getResource("../images/menuBar.png")));
	
	// 버튼 이미지 초기화
	private JButton exitButton = new JButton(exitButtonBasicImage);
	private JButton startButton = new JButton(startButtonBasicImage);
	private JButton quitButton = new JButton(quitButtonBasicImage);
startButton.setBounds(40, 330, 400, 100); // 시작버튼 이미지 위치
		startButton.setBorderPainted(false);
		startButton.setContentAreaFilled(false);
		startButton.setFocusPainted(false);
		startButton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent e) {
				startButton.setIcon(startButtonEnteredImage);
				startButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
				Music buttinEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
				buttinEnteredMusic.start();
			}
			@Override
			public void mouseExited(MouseEvent e) {
				startButton.setIcon(startButtonBasicImage);
				startButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			}
			@Override // 시작버트 이벤트 구현
			public void mousePressed(MouseEvent e) {
				Music buttinEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
				buttinEnteredMusic.start();
				startButton.setVisible(false); // 시작버튼 가리기
				quitButton.setVisible(false); // 종료버튼 가리기
				background = new ImageIcon(Main.class.getResource("../images/mainBackground.jpg")).getImage(); // 메인화면으로 전환
			}
		});
		add(startButton);
quitButton.setBounds(1245, 0, 30, 30); // 종료버튼 이미지 위치
		quitButton.setBorderPainted(false);
		quitButton.setContentAreaFilled(false);
		quitButton.setFocusPainted(false);
		quitButton.addMouseListener(new MouseAdapter() { 
			@Override
			public void mouseEntered(MouseEvent e) {
				quitButton.setIcon(quitButtonEnteredImage);
				quitButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
				Music buttinEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
				buttinEnteredMusic.start();
			}
			@Override
			public void mouseExited(MouseEvent e) {
				quitButton.setIcon(quitButtonBasicImage);
				quitButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			}
			@Override //exit버튼과 기능상  동일한 이벤트
			public void mousePressed(MouseEvent e) {
				Music buttinEnteredMusic = new Music("buttonEnteredMusic.mp3", false);
				buttinEnteredMusic.start();
				try {
					Thread.sleep(1000);
				} catch(InterruptedException ex) {
					ex.printStackTrace();
				}
				System.exit(0);		
			}
		});
		add(quitButton);