我有一个表,在每个单元格中包含另一个表。例如,该表可以包含8个其他表。我添加了拖放功能,因此我可以拖动较小的表格。它有效,但只是部分。如果我触摸较小的表的底部,则仅检测到拖放,如果我触摸它们的中间或顶部,则不会触发拖放。我试图设置较小的表的宽度和高度,然后拖放也从顶部的一个点触发,但仍然不是从它应该的任何地方?可能有什么不对?
我的代码: 在代码中,collectionTable是较大的表,TestCard是添加到collectionTable的较小表的类型。
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;
}
}
答案 0 :(得分:0)
使用:setTouchabe(Touchable.enabled)
。默认情况下,“组”(WidgetGroup或表)仅在按钮和标签等实际可见演员上注册触摸。