【问题标题】:Libgdx scene2d.ui InputListener for custom Actor not working自定义 Actor 的 Libgdx scene2d.ui InputListener 不起作用
【发布时间】:2014-01-21 21:10:19
【问题描述】:

我正在尝试使用 Libgdx Scene2dui 库并想捕捉鼠标触地事件。我有一个自定义 Actor 和一个实例化 Actor 实例并尝试侦听触摸事件的对话框。由于某种原因,触摸事件没有被捕获。

public class MMADialog136WhiteCanvasActor extends Actor {

    public MMADialog136WhiteCanvasActor () {
        super();
        setWidth(256);
        setHeight(256);
        setBounds(0, 0, getWidth(), getHeight());
        mMyRenderer = new ImmediateModeRenderer10();
    }

   @Override
    public Actor hit(float arg0, float arg1, boolean flag) {
        return null;
        }

    @Override
    public void draw(SpriteBatch batch, float arg1) {
         batch.end();
        Vector3 pos0 = new Vector3(1,1,0);
        Vector3 pos1 = new Vector3(100,100,0);
        mMyRenderer.begin(GL10.GL_LINES);        
        mMyRenderer.color(mColor.r,mColor.g,mColor.b,mColor.a);
        mMyRenderer.vertex(pos0);
        mMyRenderer.vertex(pos1);                                       
        mMyRenderer.end();
         batch.begin();
    }
    private ImmediateModeRenderer10 mMyRenderer;
    private Color mColor = MMAColor.MMAWHITE;
}

还有 Actor 实例监听器...

mWhiteCanvas.addListener(new InputListener() {
    public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
        System.out.println("x,y" + x + "," + y);
        return true;
    }
});

知道为什么 InputListener 没有捕捉到事件吗?

我最初的想法是 Actor 绘制空间需要边界,所以我根据预定义的 width=256 和 height=256 添加了 setBounds(),但这没有效果。

【问题讨论】:

  • 您是否将舞台设置为输入处理器?
  • 是的 stage 是 InputProcessor 所以这个 Actor 确实获得了焦点。

标签: java libgdx actor event-listener scene2d


【解决方案1】:
@Override
public Actor hit(float arg0, float arg1, boolean flag) {
    return null;
}

这就是问题所在。通过总是返回null,你基本上说这个演员永远不会被击中。而且它永远不会收到任何进入、点击、退出、keydown或其他事件。

如果您想要标准的边界框测试,请改为:

@Override
public Actor hit(float arg0, float arg1, boolean flag) {
    return super.hit(arg0, arg1, flag);
}

我还建议您获取代码的源代码。 arg0 似乎没有任何帮助,我想你也没有任何 JavaDoc。否则你可能会知道hit() 方法的作用。因为它有据可查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多