티스토리 뷰

Game/LibGDX

07. 라이프 사이클

유승구 2013. 1. 7. 11:17

libgdx 응용프로그램은 생성, 중지, 재게, 렌더링, 해제와 같은 어플리케이션의 상태를 관리하는 잘 정의된 라이프 사이클을 가지고 있다. 


응용프로그램리스너

개발자들은 어플리케이션리스너 인터페이스를 상속받거나 특정 백엔드의 어플리케이션 백엔드를 상속받은 개체의 전달을 통해 라이프 사이클 이벤트를 가져올 수 있다. 다음을 보면 응용프로그램은 응용프로그램의 각 수준별 이벤트가 발생할 때마다 어플리케이션리스너를 호출 할 것이다. 어플리케이션의 기초가 되는 것은 다음과 같이 생겼다.

public class MyGame implements ApplicationListener {
   
public void create () {
   
}

   
public void render () {        
   
}

   
public void resize (int width, int height) {
   
}

   
public void pause () {
   
}

   
public void resume () {
   
}

   
public void dispose () {
   
}
}
인터페이스 메소드와 적절하지 않는 다면 하나라도 어플리케이션아답터 클래스로 부터 도출 할 수 있다.

응용프로그램에게 전달 되면 어플리케이션 리스너는 메소드를 다음에 따라 호출 한다.

 Method signatureDescripton 
 create()

어플리케이션이 생성될때 호출된다. 

 resize(int w, int h)

게임 스크린 변하거나 게임이 멈춤 상태가 아닐때 매번 호출된다. 이 메소드는 create() 메소드에서도 한번 호출된다.


파라미터는 픽셀 사이즈로 스크린의 가로/세로를 조정한다. 

 render() 

매시간 렌더링을 수행하기 위한 게임루프에 의해 호출 된다. 게임 로직은 대게 이 함수에 의해 수행된다. 

 pause()

안드로이드에서 이 메소드는 홈버튼이 눌리거나 전화를 받을 때 호출된다. 데스크탑에서는 dispose() 직전에서나 불린다.

게임 상태를 저장할때 좋은 장소다. 

 resume()

이 메소드는 안드로이드에서만 호출된다. 어플리케이션 puase 상태에서 돌아올때. 

 dispose()

어플리케이션이 종료 되는 시점(파괴) pause()를 실행한다. 


다음 다이어그램은 라이프 사이클을 보기 쉽도록 그린 내용이다.





메인 루프는 어디에?

libgdx는 안드로이드나 자바스크립트의 기본 이벤트 드리븐 방식이다. 분명한 메인 루프는 존재하지 않지만 어플리케이션 리스너의 ApplicationListener.render() 메소드는 메인루프의 몸체라고 생각 할 수 있다.


'Game > LibGDX' 카테고리의 다른 글

[샘플분석] 가속 테스트  (0) 2013.08.12
08. 시작 클래스와 설정  (0) 2013.01.07
07. 라이프 사이클  (0) 2013.01.07
06. 어플리케이션 프레임워크  (0) 2013.01.07
05. 프로젝트 설정  (0) 2013.01.07
04. 준비단계  (0) 2013.01.07
댓글
댓글쓰기 폼