拖放仅从 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)仅在按钮和标签等实际可见角色上注册触摸。