YeaLow
article thumbnail

 

이벤트 실행법 : 이벤트 포착하는 이벤트리스너 -> 큐(순차적 처리) 형태의 이벤트 루프 -> 이벤트 핸들러 호출.
                          이벤트루프는 있지만, 이벤트리스너와 이벤트핸들러 호출될 수 있는 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();
		}

실행되는데 시간이 무지 오래 소요된다.

1번도 2초 2번도 2초.. 5번까지 하면 10초까지 걸린다.


Thread가 하나이기 때문에 동시동작이 안된다

1. 그림 변경 시점 : 이벤트 루프에 모든 임무(task)가 완료 되어야 repaint가 된다.

2. 메인쓰레드만 있으면 Key전달을 동시에 할 수 없다. -> 이벤트루프에 R or U 하나밖에 적용이 안된다.

 

JAVA : 스레드가 있다!

profile

YeaLow

@YeaLow

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!