2

これが私を混乱させているコードです。ここで何かが欠けているかもしれませんが、それを理解できませんでした。

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 
4

1 に答える 1

3

どのメソッドが何をするかについて、いくつかの混乱があります。

このメソッドhit()は、それらの座標にあるアクターを返します。ご希望の方法はtouchDown(). javadocs にはほとんど情報がないので、こちらをお読みください。がそれらの座標にある を見つけるTActor.hit()方法であるため、 が呼び出されていることがわかります。Stage.touchDown()Actor

于 2012-06-19T02:13:37.877 に答える