Java 当删除失败时,参与者正在丢失-libgdx

Java 当删除失败时,参与者正在丢失-libgdx,java,drag-and-drop,libgdx,Java,Drag And Drop,Libgdx,我正在做一个rummikub游戏,我有一个棋盘,上面有瓷砖,棋盘上的所有位置都被定义为TileActor。一些瓷砖演员身上有实际的瓷砖,一些是空的。问题是:当我拖动一个互动程序并将其放到一个空的互动程序上时,效果很好,但当我将其放到一个空的空间上时,演员就迷路了。我怎样才能防止演员们迷路 这是我的拖放代码: dragAndDrop.addSource(new Source(actor) { @Override public Payload dragStart

我正在做一个rummikub游戏,我有一个棋盘,上面有瓷砖,棋盘上的所有位置都被定义为TileActor。一些瓷砖演员身上有实际的瓷砖,一些是空的。问题是:当我拖动一个互动程序并将其放到一个空的互动程序上时,效果很好,但当我将其放到一个空的空间上时,演员就迷路了。我怎样才能防止演员们迷路

这是我的拖放代码:

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());

                    }
                }
            });

问题是您向
有效负载
提供了自己的
Actor
(因此
dragandrop
注意删除此Actor):

尝试创建
参与者的副本

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