【发布时间】:2016-03-27 21:11:23
【问题描述】:
在我的 create() 方法中,我创建了一个表格并插入了一些按钮,如下图所示。
http://www2.pic-upload.de/thumb/29190899/Unbenannt.png
每次用户按下按钮时,都会在他的手指/按钮位置下方出现一个新的可拖动纹理。
我尝试了以下方法:
sourceImage.addListener(controller);
testbutton.get(2).addListener(new ClickListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
sourceImage.setVisible(true);
sourceImage.setPosition(vec.x, vec.y);
return super.touchDown(event, x, y, pointer, button);
}
});
这很好用,但我想让用户在他的手指上获得纹理,而不必再次按下它来拖动它。
所以我尝试在触摸开始之前将图像放置到按钮上。
问题是,我无法获取表格按钮的位置,因为表格将在应用程序启动后呈现,如果我错了,不在 create() 中纠正我。
当我尝试在我的 create() 中获取实际表位置时,它返回 0,0
我在论坛中找到了解决方案: Getting Stage coordinates of Actor in Table in libGDX
public static Vector2 getStageLocation(Actor actor) {
return actor.localToStageCoordinates(new Vector2(0, 0));
}
在我的 render() 中
vec = getStageLocation(testbutton.get(2));
它给了我表格中按钮的正确位置,但我不知道在按下按钮之前我必须在何时何地设置纹理的位置?
【问题讨论】:
标签: libgdx drag-and-drop actor clicklistener