java - 删除失败时 Actor 会迷路 -libgdx

标签 java drag-and-drop libgdx

我正在开发一款 rummikub 游戏,我有一个棋盘,上面有方 block ,并且方 block 上的所有位置都定义为 TileActor。有些瓷砖 Actor 上面有实际的瓷砖,有些是空的。问题是:当我将一个图 block 拖放到一个空的 TileActor 上时,它工作正常,但是当我将它放到空白处时, Actor 就会迷路。如何防止 Actor 迷路?

这是我的拖放代码:

dragAndDrop.addSource(new Source(actor) {   
        @Override
        public Payload dragStart(InputEvent event, float x, float y, int pointer) {
            Payload payload = new Payload();
            payload.setObject("Some payload!");
            payload.setDragActor(getActor());

            Label validLabel = new Label("Valid move!", skin);
            validLabel.setColor(0, 1, 0, 1);
            payload.setValidDragActor(validLabel);

            Label invalidLabel = new Label("Invalid!", skin);
            invalidLabel.setColor(1, 0, 0, 1);
            payload.setInvalidDragActor(invalidLabel);


            return payload;
        }

    dragAndDrop.addTarget(new Target(actor) {
                public boolean drag (Source source, Payload payload, float x, float y, int pointer) {
                    getActor().setColor(Color.GREEN);
                    return true;
                }

                public void reset (Source source, Payload payload) {
                    getActor().setColor(Color.WHITE);
                }

                public void drop (Source source, Payload payload, float x, float y, int pointer) {

                    int movingTile =((TileActor)source.getActor()).getPosition();
                    if(movingTile!=-1){
                int newPosition=player.moveTileOnBoard(movingTile, ((TileActor)getActor()).getPosition());

                    }
                }
            });

最佳答案

问题是您向 Payload 提供了自己的 Actor(因此 DragAndDrop 需要注意删除这个 actor):

payload.setDragActor(getActor());

尝试创建 Actor 的副本:

Actor newActor = /* clone your actor from getActor() to newActor */;
payload.setDragActor(newActor);

关于java - 删除失败时 Actor 会迷路 -libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21523764/

相关文章:

java - 何时在 ZK 生命周期中组合组件?

javascript - 如何在 Google Maps JavaScript API (V3) 中强制拖动标记?

ios - 拖放工作 - 自动滚动不

java - 像素点,桌面和安卓

opengl-es - 使用 OpenGL ES 2.0 进行模板制作

java - 如何围绕我的模型程序包装 javafx 8 GUI

java - 如何在selenium中找到特定Web元素中的直接Web元素?

drag-and-drop - 通过拖放将文件从 Qt 5.2 应用程序复制到文件系统

java - LibGDX applyLinearImpulse 试图实现重力....困惑

java - 用于企业 Web 应用程序的 PHP 与 Java