2012-06-18 5 views
2

다음은 혼란스러운 코드입니다. 나는 뭔가를 여기에서 놓치고 있을지도 모른다. 그러나 그것을 이해할 수 없었다. LIBGDX : 클래스가 scene2d를 확장하면 hit() 메서드가 호출되지 않습니다. 스테이지

public class TStage extends Stage { 

    public TStage(float width, float height, boolean stretch) { 
     super(width, height, stretch); 
    } 

    @Override 
    public Actor hit(float x, float y) { 
     Gdx.app.debug("HUNT", "in hit of TStage"); 
     return super.hit(x, y); 
    } 
} 

public class TActor extends Actor { 

    @Override 
    public void draw(SpriteBatch batch, float parentAlpha) { 
     // draw something here 
    } 

    @Override 
    public Actor hit(float x, float y) { 
     Gdx.app.debug("HUNT", "in hit of TActor"); 
     return null; 
    } 
} 

    /* Code to set stage*/ 

    TStage stage = new TStage(Hunt.GAME_WIDTH, Hunt.GAME_HEIGHT, false); 
    Gdx.input.setInputProcessor(stage); 
    TActor actor1 = new TActor(); 
    stage.addActor(tactor); 

나는 화면을 터치

출력 :

in hit of TActor 

내가 무엇을 기대하고있다 :

in hit of TStage 
in hit of TActor 


내가 TStage 클래스

에 다음 코드를 추가 [편집]
@Override 
    public Actor touchDown(int x, int y, int pointer, int button) { 
     Gdx.app.debug("HUNT", "in touchDown of TStage"); 
     return super.touchDown(x, y, pointer, button); 
    } 

이제 출력은 다음과 같습니다

in touchDown of TStage 
in hit of TActor 

답변

3

이 방법은 어떤 작업을 수행하는 대한 약간의 혼동이있다.

메서드 hit()은 해당 좌표에있는 액터를 반환합니다. 원하는 방법은 touchDown()입니다. javadocs에는 거의 정보가 없으므로 다음을 읽어보십시오 : here. TActor.hit()이 호출 된 것은 Stage.touchDown()이 그 좌표에있는 Actor을 찾는 이유입니다.

+0

네, 맞습니다. 나는 당신의 제안을 산출물과 함께 덧붙였다. 그것이 그 길인 것처럼 보인다. – Pradeep