gpt4 book ai didi

java - 自定义 Actor 的 Libgdx scene2d.ui InputListener 不起作用

转载 作者:行者123 更新时间:2023-12-02 06:22:12 24 4
gpt4 key购买 nike

我正在尝试使用 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(),但这没有效果。

最佳答案

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

这就是问题所在。通过始终返回 null,您基本上可以说该 Actor 从未被击中。并且它永远不会接收任何输入、单击、退出、按键或其他事件。

如果您想要标准边界框测试,请执行以下操作:

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

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

关于java - 自定义 Actor 的 Libgdx scene2d.ui InputListener 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com