拖放仅从 Actor 底部触发 Libgdx
Drag and drop only triggers from the bottom of the Actor Libgdx
我有一个 table,它在每个单元格中包含另一个 table。例如,table 可以包含其他 8 个 table。我添加了拖放功能,这样我就可以拖动较小的 tables。它有效但只是部分有效。只有当我触摸较小的 tables 的底部时才会检测到拖放,如果我触摸它们的中间或顶部则不会触发。我尝试设置较小的 tables 的宽度和高度,然后拖放也从顶部的一个点触发,但仍然不是从任何地方触发?有什么问题吗?
我的代码:
在代码中,collectionTable 是较大的 table,TestCard 是添加到 collectionTable 的较小 table 的类型。
dnd = new DragAndDrop();
dnd.setDragTime(50);
for (final Actor x : collectionTable.getChildren()) {
TestCard y = (TestCard) x;
y.setWidth(Gdx.graphics.getWidth() / (7 * scale));
y.setHeight(Gdx.graphics.getHeight() / (3.3f * scale));
dnd.addSource(new CardSource(y));
dnd.addTarget(new Target(selectedDeck);
//not adding the code from the target as it works as intended
class CardSource extends Source {
final Payload payload = new Payload();
TestCard card;
public CardSource(Actor actor) {
super(actor);
}
public CardSource(TestCard card) {
super(card);
this.card = card;
card.setWidth(Gdx.graphics.getWidth() / (7 * scale));
card.setHeight(Gdx.graphics.getHeight() / (3.3f * scale));
}
public Payload dragStart(InputEvent event, float x, float y, int pointer) {
payload.setObject(card.);
payload.setDragActor(new TestCard(card));
//payload.setInvalidDragActor(invalidActor);
payload.setValidDragActor(new TestCard(card));
return payload;
}
}
使用:setTouchabe(Touchable.enabled)
在父 table 上。默认情况下,'group'(WidgetGroup 或 Table)仅在按钮和标签等实际可见角色上注册触摸。
我有一个 table,它在每个单元格中包含另一个 table。例如,table 可以包含其他 8 个 table。我添加了拖放功能,这样我就可以拖动较小的 tables。它有效但只是部分有效。只有当我触摸较小的 tables 的底部时才会检测到拖放,如果我触摸它们的中间或顶部则不会触发。我尝试设置较小的 tables 的宽度和高度,然后拖放也从顶部的一个点触发,但仍然不是从任何地方触发?有什么问题吗?
我的代码: 在代码中,collectionTable 是较大的 table,TestCard 是添加到 collectionTable 的较小 table 的类型。
dnd = new DragAndDrop();
dnd.setDragTime(50);
for (final Actor x : collectionTable.getChildren()) {
TestCard y = (TestCard) x;
y.setWidth(Gdx.graphics.getWidth() / (7 * scale));
y.setHeight(Gdx.graphics.getHeight() / (3.3f * scale));
dnd.addSource(new CardSource(y));
dnd.addTarget(new Target(selectedDeck);
//not adding the code from the target as it works as intended
class CardSource extends Source {
final Payload payload = new Payload();
TestCard card;
public CardSource(Actor actor) {
super(actor);
}
public CardSource(TestCard card) {
super(card);
this.card = card;
card.setWidth(Gdx.graphics.getWidth() / (7 * scale));
card.setHeight(Gdx.graphics.getHeight() / (3.3f * scale));
}
public Payload dragStart(InputEvent event, float x, float y, int pointer) {
payload.setObject(card.);
payload.setDragActor(new TestCard(card));
//payload.setInvalidDragActor(invalidActor);
payload.setValidDragActor(new TestCard(card));
return payload;
}
}
使用:setTouchabe(Touchable.enabled)
在父 table 上。默认情况下,'group'(WidgetGroup 或 Table)仅在按钮和标签等实际可见角色上注册触摸。