我正在尝试向Libgdx中的多个图像添加拖放功能。我看了以下示例:https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/DragAndDropTest.java,但是它仍然无法正常工作。图像不会拖放。谁能给我一些指示,为什么它不起作用?
谢谢

private void createButton() {
    stage = new Stage();
    Gdx.input.setInputProcessor(stage);
    skin = new Skin();
    skin.add("up", new Texture(Gdx.files.internal("assets/data/up.png")));
    skin.add("def", new Texture(Gdx.files.internal("assets/data/Goal.png")));

    final Image up = new Image(skin, "up");
    up.setBounds(1090, 630, 40, 40);
    stage.addActor(up);
    Image def = new Image(skin, "def");
    def.setBounds(1090, 585, 40, 40);
    stage.addActor(def);
    DragAndDrop dragAndDrop = new DragAndDrop();
    dragAndDrop.addSource(new Source(up) {
            public Payload dragStart (InputEvent event, float x, float y, int pointer) {
                    Payload payload = new Payload();
                    payload.setObject(payload);
                    payload.setDragActor(up);
                   payload.setDragActor(new Label("up", skin));
                    Label validLabel = new Label("up", skin);
                    validLabel.setColor(0, 1, 0, 1);
                    payload.setValidDragActor(validLabel);

                    return payload;
            }
    });

    dragAndDrop.addTarget(new Target(def) {
        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) {
                System.out.println("Accepted: " + payload.getObject() + " " + x + ", " + y);
        }
});
    render();
}

  public void render () {
        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();
        Table.drawDebug(stage);
}

最佳答案

我在我的一个项目中实现了您的代码。

我删除了您的渲染并使用了下面的渲染。另外,您不需要在图像导入中使用资产/前缀。

skin.add("up", new Texture(Gdx.files.internal("images/coin.png")));
skin.add("def", new Texture(Gdx.files.internal("images/coin.png")));

 @Override
public void render(float delta) {
    super.render(delta);
    stage.draw();
    stage.act(Gdx.graphics.getDeltaTime());

}

10-04 23:41
查看更多