LIBGDX:当类扩展scene2d.Stage时,不调用hit()方法

时间:2012-06-18 20:42:08

标签: java libgdx extends stage 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 

1 个答案:

答案 0 :(得分:3)

对于哪种方法可以做什么存在一些困惑。

方法hit()返回那些坐标处的actor。您想要的方法是touchDown()。 javadocs中几乎没有信息,所以请阅读here。您会看到TActor.hit()被调用,因为这是Stage.touchDown()找到位于这些坐标的Actor的方式。