이벤트 실행법 : 이벤트 포착하는 이벤트리스너 -> 큐(순차적 처리) 형태의 이벤트 루프 -> 이벤트 핸들러 호출.
이벤트루프는 있지만, 이벤트리스너와 이벤트핸들러 호출될 수 있는 stack공간은 만들어줘야
-> 이벤트 리스너 만들고 안에 이벤트핸들러 등록하는 형태
어떤 프로그램이 있으면
Window OS(Operation System 위에 동작을 한다.
left버튼을 누르면 이벤트루프에 LEFT 저장
10번을 눌리면 동시에 10번이 입력 -> (큐) 순차적 입력 =순차력 출력된다
private void initListener() { // 리스너를 만들고
addKeyListener(new KeyAdapter() { //이벤트 핸들러를 등록
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
player.left();
break;
case KeyEvent.VK_RIGHT:
player.right();
break;
case KeyEvent.VK_UP:
player.up();
break;
}
}
});
}
try {
Thread.sleep(2000); // 2초 멈췄다가 이동
} catch (InterruptedException e) {
e.printStackTrace();
}
실행되는데 시간이 무지 오래 소요된다.
Thread가 하나이기 때문에 동시동작이 안된다
1. 그림 변경 시점 : 이벤트 루프에 모든 임무(task)가 완료 되어야 repaint가 된다.
2. 메인쓰레드만 있으면 Key전달을 동시에 할 수 없다. -> 이벤트루프에 R or U 하나밖에 적용이 안된다.
JAVA : 스레드가 있다!
'Java' 카테고리의 다른 글
전체 스레드 동작 원리 짚어보기 (0) | 2022.10.07 |
---|---|
버블이(?)가 달라졌어요 (0) | 2022.10.06 |
자바 버블버블5 - 캐릭터 좌우이동 (0) | 2022.10.06 |
버블버블 - 4 게임맵 캐릭터 추가 (0) | 2022.10.04 |
버블버블 - 3 Frame 설정 (0) | 2022.10.04 |