【问题标题】:LibGDX: How to keep displaying actor after drag (drag off)LibGDX:拖动后如何继续显示演员(拖动)
【发布时间】:2014-08-07 03:53:36
【问题描述】:

我已经实现了拖放,但问题是在用户释放拖动之后。被拖拽的演员从屏幕上消失了。如果 Actor 掉落到不正确的位置,如何将其移动到新位置或返回其位置?

感谢您的回答。

问候,

阿尔法 '

final DragAndDrop dragAndDrop = new DragAndDrop();
  final Box sourceBox =  boxList.get(0);
  final Box targetBox =  boxHolderList.get(0);

  Source source = new Source(sourceBox) {

     @Override
     public void dragStop(InputEvent event, float x, float y,
           int pointer, Payload payload, Target target) {

        Box sourceBox = (Box) payload.getDragActor();
        if (target == null){
           sourceBox.setPosition(sourceBox.getX(), sourceBox.getY());
        }
        else{
           Box targetBox = (Box) target.getActor();
           sourceBox.setPosition(targetBox.getX(), targetBox.getY());
        }
     }

     @Override
     public Payload dragStart(InputEvent event, float x, float y, int pointer) {

        dragAndDrop.setDragActorPosition(-1*sourceBox.getWidth()/2, 1*sourceBox.getHeight()/2);
        Payload payload = new Payload();
        payload.setDragActor(sourceBox);

        Label validLabel = new Label("Valid!", 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;
     }


  };

【问题讨论】:

    标签: drag-and-drop libgdx


    【解决方案1】:

    这个拖拽的方式很网格,你可以试试这个

     yourActor.addListener(new DragListener(){
    
            public void touchDragged(InputEvent event, float x, float y, int pointer) {
                yourActor.moveBy(x-yourActor.getWidth()/2,y-yourActor.getHeight()/2);
            }});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多