我正在尝试使用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绘制空间需要边界,所以我根据预定义的宽度= 256和高度= 256添加了setBounds(),但这没有效果。
答案 0 :(得分:2)
@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()
方法的作用。因为它有很好的记录。