안드엔진: 터치 이벤트
터치 입력과 관련된 클래스들은 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;
}
});
@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) ;
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) ;
@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) ;
댓글
댓글 쓰기