【问题标题】:LibGDX How to know if anybody clicks on textureLibGDX 如何知道是否有人点击了纹理
【发布时间】:2014-12-13 23:15:49
【问题描述】:

如果有人触及纹理的位置,我正在使用它,做点什么。但这很糟糕,我想制作一个可调整大小的游戏,因为不是每个人都有高清及以上的屏幕(而在 androids 上,情况更糟..)。所以,我已经应用了投影矩阵,所以如果我调整它的大小,它看起来不错,但是如果我调整我的屏幕大小,按钮会比原来更大或更小,所以现在位置不正确。所以我的问题是,有什么方法可以将 OnClickListener 设置为纹理?所以如果我调整屏幕大小它会起作用。

或者,我认为,也可能有一个按钮。但我不知道如何设置按钮的纹理。

【问题讨论】:

  • 您可以尝试为图像添加监听器。
  • 我只是想这样做,它不起作用,我试图在stackoverflow.com/questions/13863138/… 的帮助下设置侦听器,但是什么也没发生,我创建了一个 Touch 类,我在其中实现 InputAdapter,然后我设置输入处理器,也许我做错了什么......我应该把 Image.setListener 放在哪里?去触摸课,还是去我的核心课?
  • 你可以先在这里发布一些代码。
  • 所以?请看我的代码:)

标签: image button click libgdx textures


【解决方案1】:

所以,在 create func 中我创建了一个图像:

Image backImage = new Image(backTexture); //backTexture is my button texture
backImage.setX(0);
backImage.setY(0);
backImage.setWidth(800);
backImage.setHeight(480);

然后在渲染函数中,我有:

backImage.addListener(new ClickListener() {
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button)
    {
        //do something
        return true;
    }
});

并且,我创建了一个新类,我在其中实现了 InputAdapter,并且在创建函数中我还调用了

Touch t; // my touch class 
Gdx.input.setInputProcessor(t);

所以,它应该覆盖 Touch.class 中的 TouchDown 函数,但它不起作用

【讨论】:

  • 你为什么要创建另一个类?您将图像添加到舞台,并将输入处理器设置到舞台。 stage = new Stage(); Gdx.input.setInputProcessor(stage); stage.addActor(image);
  • 是的,现在我做得更好了
  • 是的,但我没有使用 touchDown(),我使用的是 clicked()
【解决方案2】:

尝试使用这个监听器:

image.addListener(new ChangeListener() {
        @Override
        public void changed (ChangeEvent event, Actor actor) {
            //smth
        }
    });

【讨论】:

  • 此代码不起作用。我会看到完整的代码(创建和渲染)。我实际上尝试使用它:stackoverflow.com/questions/23574821/…。他们建议他使用 Clicked() 函数,并且.. 它对我有用,但如果我只点击按钮的左侧。它不适用于完整的按钮图像。所以我不知道是否有问题或在哪里。 :D
  • 左边是什么意思?你能想象一下吗?你在使用视口吗?
  • 啊,现在它工作了,我不知道为什么它没有工作。所以现在,如果我正在调整屏幕大小,它不适用。所以如果我让我的屏幕更小,可点击的空间不在图像中..如何解决这个问题?在 resize() 中调用初始化图像;?顺便提一句。如果我在程序启动之前设置屏幕大小,它可以工作。那么,我可以期待如果程序将在具有其他屏幕的移动设备上运行,它会工作吗? :) :D
  • 您应该使用视口,它会自动缩放所有内容。如果我帮助了你,请接受答案并投票:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
相关资源
最近更新 更多