0

ここでいくつかの回答をスタックオーバーフローで読み、SpriteActor の入力イベントが運がなければ発生しない理由を突き止めようとしました。私が間違っていることを知りません。誰かが助けてくれれば、本当に感謝しています。

-スクリーンクラス

public class MainGameScreen implements Screen
{

Stage _stage;

public MainGameScreen()
{
    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();

    _stage=new Stage(w,h,true);
    Gdx.input.setInputProcessor(_stage);

    TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("data/texturesHD.atlas"));

    SpriteActor actor= new SpriteActor(atlas,"BtTemple",true);
    actor.x=w/2.0f;
    actor.y=h/2.0f;


    _stage.addActor(actor);
}

public void     dispose()
{
}

public void     hide()
{
}


public void     resize(int width, int height)
{
}

public void     resume()
{
}

public void     show()
{
}

public void render(float deltaTime) 
{
    _stage.draw();
}   
public void pauseGame() 
{
}

// this is called by android 
public void pause() 
{
}

}

そして、ここで私の SpriteActor クラス:

class SpriteActor extends Actor 
{
private Sprite _sprite;


public SpriteActor(TextureAtlas atlas, String regionName, boolean touchable) 
{   
    super();

    _sprite = atlas.createSprite(regionName);

    //setWidth(_sprite.getWidth());
    //setHeight(_sprite.getHeight());
    //setBounds(x,y,getWidth(),getHeight());

    this.touchable=touchable;
}

@Override
public void draw(SpriteBatch batch, float parentAlpha) 
{
    /*Color color = getColor();
    batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);*/
    batch.draw(_sprite, x, y);
}

@Override
public Actor hit(float x, float y)
{
    return null;
}

@Override
public boolean touchDown (float x, float y, int pointer) 
{
    Gdx.app.debug("Game", "TestActor.touchDown()");
    return true;  // must return true for touchUp event to occur
}
@Override
public void touchUp (float x, float y, int pointer) 
{
    Gdx.app.debug("Game", "TestActor.touchUp()");
}
}

前もって感謝します。

4

2 に答える 2

0

次のようなものを試してください:

public class MainGameScreen implements Screen, InputProcessor {

setInputProcessorを次のようにshow()メソッドに移動します。

@Override
public void show() {
    Gdx.input.setInputProcessor(this);
}

そして、InputProcessorからメソッドを実装します。

@Override
public boolean keyDown(int keycode) {
    //do whatever you want
    return _stage.keyDown(keycode);
}
于 2013-01-22T19:29:36.757 に答える
0

さて、私は自分の質問に答えます。問題は、null を返すヒット メソッドを提供したため、システムでチェックしたときにヒットしませんでした。

于 2013-01-22T20:45:07.193 に答える