我的游戏中有两张桌子。当我点击第一个表格中的一个单元格时,我想绘制一个跟随我的手指的箭头,以便我可以将箭头从第二个表格移动到表格单元格。我需要能够知道哪个是最初的单元格,哪个是最后一个单元格(箭头开始的位置和箭头完成的位置)。如果用户将手指从屏幕上移开并且不在桌面上,我不希望发生任何事情。
DataView dv = new DataView();
dv.Table = dt;
dv.Filter = "CompanyName='abc'";
listView.ItemsSource = dv;
我该怎么做?
答案 0 :(得分:0)
希望这会有所帮助。
Actor startFromActor = null; // Variable outside of method
public void foo() {
// smt before
ArrayList<Actor> myActor = new ArrayList<Actor>();
ArrayList<Actor> anotherActor = new ArrayList<Actor>();
// fill array with my actors
Table firstTable = new Table();
Table secondTable = new Table();
for (int i = 0; i < 7; i++) {
final Actor curActor = myActor.get(i);
firstTable.add(curActor);
curActor.addListener(new ActorGestureListener() {
public void touchDown(InputEvent event, float x, float y, int pointer, int button) {
if (pointer > 0) return false; // For only one finger
startFromActor = curActor;
// draw arrow that follows finger
}
});
}
for (int i = 0; i < 7; i++) {
final Actor curActor = anotherActor.get(i);
secondTable.add(curActor);
curActor.addListener(new ActorGestureListener() {
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
if (pointer > 0) return false; // For only one finger
if (startFromActor != null) {
// do something
// startActor - actor from first table
// curActor - actor from second table
startFromActor = null; // do not forget to null-setting
}
}
});
}
}
如果您需要从一个表到另一个表的两个方向,则应为每个touchUp
设置touchDown
和Actor
个事件,然后检查谁是开始和结束演员的所有者;
答案 1 :(得分:0)
您可以使用 libgdx 中的内置 Mesh 实用程序绘制箭头:
Mesh
建议只构建一个网格(通常在 init ),然后在运行时重复使用(渲染)它,次数与应用程序所需的箭头一样多。对于构建网格的目的,可以使用 Meshbuilder 和 ArrowShapeBuilder。示例:
MeshBuilder meshbuilder = new MeshBuilder();
meshbuilder.begin(VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal, GL20.GL_TRIANGLES);
ArrowShapeBuilder.build(
meshbuilder,
0,0,0 /* Starting xyz */
5,5,0 /* Ending xyz */
0.1f, /* percentage of arrow head */
0.1f, /* percentage of stem thickness */
10 /* divisions, basically level of detail */
);
Mesh debug_arrow = meshbuilder.end();
通过上面的内容构建了一个可渲染的网格。
此步骤非常简单,前提是 Batch 已经可用:
debug_arrow.render(batch.getShader(), GL20.GL_TRIANGLES);
然后由舞台投影矩阵设置箭头的位置。 Batch
应该可用,至少渲染阶段有一个到 getBatch()。
注意:网格参数不一定总是GL20.GL_TRIANGLES
,但meshbuilder.begin
和debug_arrow.render
中的参数必须匹配。