java - libgdx 拖放

标签 java libgdx

我正在尝试向 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);
}

最佳答案

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

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

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

}

关于java - libgdx 拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21426845/

相关文章:

java - Weblogic 在 VM(VirtualBox 和 VMware)下启动缓慢(11 分钟)

java - Install4j:使用 'Add VM options' 安装操作时如何防止文件覆盖?

java - 无法在Java中使用appium单击硬件菜单按钮

libgdx - 如何计算从点A到点B的给定距离和角度的弹丸运动的初始速度?

libgdx - libgdx 中的纹理打包器大小问题

libgdx - 如何更改窗口/表中现有scene2d.ui小部件的大小?

java - 使用多个标识符查询 MySQL

java - 使用图像作为 JPanel 和 JButton 的背景

java - 我如何在触摸时启动动画,该动画将在到达 Sprite 表末尾后停止?

java - 如何将实体组件系统用于整个系统的libgdx中的舞台,组和 Actor 的游戏设计?