안드엔진: 터치 이벤트

터치 입력과 관련된 클래스들은 org.andengine.input.touch 패키지에서 찾아볼 수 있다.

장면 터치 이벤트
Scene 클래스의 setOnSceneTouchListener() 메서드를 사용해서 IOnSceneTouchListener 인터페이스를 구현한다.
pScene.setOnSceneTouchListener( new IOnSceneTouchListener() {
    
@Override
    
public boolean onSceneTouchEvent (Scene pScene , TouchEvent pSceneTouchEvent) {
         
if (pSceneTouchEvent.isActionDown()) {
             
//TODO
             
return true;
         
}
         
return false;
    
}
})
;

영역 터치 이벤트
스프라이트 등 엔티티의 터치 여부를 처리하려면 엔티티의 onAreaTouched() 메서드를 오버라이드한 후, 장면의 registerTouchArea()메서드를 사용해서 터치 영역을 등록해줘야 한다.
Sprite button = new Sprite(posX, posY,
         
textureRegion , getVertexBufferObjectManager()){
    
@Override
    
public boolean onAreaTouched (TouchEvent pSceneTouchEvent, float pTouchAreaLocalX , float pTouchAreaLocalY) {
         
// TODO
         
return super.onAreaTouched(pSceneTouchEvent , pTouchAreaLocalX , pTouchAreaLocalY);
    
}
}
;
pScene.registerTouchArea(button) ;
pScene.attachChild(button) ;

디텍터
디텍터 클래스는 scene의 registerUpdateHandler() 메서드를 사용해서 등록한다.
ContinuousHoldDetector continuousHoldDetector = new ContinuousHoldDetector( new HoldDetector.IHoldDetectorListener() {
    
@Override
    
public void onHoldStarted (HoldDetector pHoldDetector, int pPointerID, float pHoldX , float pHoldY) {
         
//TODO
    
}

    
@Override
    
public void onHold(HoldDetector pHoldDetector, long pHoldTimeMilliseconds , int pPointerID, float pHoldX , float pHoldY) {
         
//TODO
    
}

    
@Override
    
public void onHoldFinished (HoldDetector pHoldDetector, long pHoldTimeMilliseconds , int pPointerID , float pHoldX, float pHoldY) {
         
//TODO
    
}
})
;
pScene.registerUpdateHandler(continuousHoldDetector) ;


이 블로그의 인기 게시물

좌표 변환: 회전 이동

Unmappable character for encoding MS949

Hello JNI (3), C 라이브러리에 문자열 전달