android - 有没有一种方法可以检查 libgdx Scene2d 图像或 Actor 是否被触摸?

标签 android image touch actor libgdx

这是我想要创建的 libgdx android 游戏的示例。还没有什么特别的,因为我刚刚开始我的 Android 游戏冒险。

这是我希望得到解答的几个问题

到目前为止,我正在使用 Gdx.input.isTouched 函数并检查它是否与兔子坐标匹配,我对每个兔子都这样做,最后我想要 11 个兔子,这实在是太多了,写不完。有没有办法检查 Image 类是否来自 import com.badlogic.gdx.scenes.scene2d.ui.Image;被感动了?或者说 Actor 类有这个功能吗?

另一件事是,当我实例化兔子类并单击兔子时,所有这些都变为“害怕”。这是因为 Scene2d.Image 纹理必须是静态的。有办法改变吗?

if(Gdx.input.isTouched()){  

            x = Gdx.input.getX();  
            y = Gdx.graphics.getHeight() - Gdx.input.getY();


         // **** Show Coordinates **** \\ 
            if (x < 420)
                font.draw(batch, "x:" + x + 
                    "\n y: " + y, x, y);
            else
                font.draw(batch, "x:" + x + 
                        " y: " + y, x-65, y);
         // **** End Show Coordinates **** \\

            //if krolik (bunny) is touched add highscore and change texture to scared
            if (x >= krolik.pos.x && y >= krolik.pos.y
                    && x <= krolik.pos.x + 64 && y <= krolik.pos.y + 64)
            {   
                krolik.scared();
                highscore+=100;
            }
            else if (x >= krolik2.pos.x && y >= krolik2.pos.y
                    && x <= krolik2.pos.x + 64 && y <= krolik2.pos.y + 64)
            {   
                krolik2.scared();
                highscore+=100;
            }
       } 
        else{

        krolik.normal();

        }
        // **** Show Highscore **** \\ 
        font.draw(batch, "Highscore: " + highscore, 350, 300);
        batch.draw(krolik.getTexture(), krolik.pos.x, krolik.pos.y);
        batch.draw(krolik2.getTexture(), krolik2.pos.x, krolik2.pos.y);
            batch.end();

最佳答案

为什么你用的是Image而不是用Stage来绘图?图像和其他 Actors 用于使用 Stage,它可以非常轻松地处理您的触摸事件和绘图。

像这样创建它们:

for (int i = 0; i < KROLIKS_COUNT; i++) {
    final Image krolik = new Image(nonScaredTextureRegion);
    krolik.setClickListener(new ClickListener() {
        @Override
        public void click(Actor actor, float x, float y) {
            krolik.setRegion(scaredTextureRegion);
            highscore+=100;
        }
    });
    krolik.x = startPosX;
    krolik.y = startPosY;
    stage.addActor(krolik);
}

将舞台设置为输入处理器:

Gdx.input.setInputProcessor(stage);

然后在渲染中,简单地:

stage.act(Gdx.graphics.getDeltaTime());
stage.draw();

关于android - 有没有一种方法可以检查 libgdx Scene2d 图像或 Actor 是否被触摸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302781/

相关文章:

user-interface - 触摸时代的工具提示

java - 我可以在代码中的哪里放置 ACTION_UP 以便其正常工作?

java - 从另一个类中的 protected 方法获取变量值

php - 如何使用 PHP 在整个请求的图像中重复水印?

css - 如何使用 CSS 制作 3D 横幅叠加层(??)

javascript - 正则表达式匹配字符串,如果不匹配

ios - UIGestureRecognizer 不工作

android - Java 中的自定义正则表达式

java - 使用 themoviedb 获取 401,并进行改造

java - 使用jsoup解析动态增长的网页