有没有一种方法可以检查一个libgdx Scene2d图像或Actor是否被触摸?
问题描述:
这里是我想要创建的libgdx安卓游戏的示例。没什么特别的,因为我刚刚开始我的Android游戏冒险。有没有一种方法可以检查一个libgdx Scene2d图像或Actor是否被触摸?
这里有几个问题我想获得我使用的Gdx.input.isTouched功能,并检查了兔子的坐标匹配到目前为止回答
,我这样做,每个兔子,并在最后,我想有11个,这太写了。有没有办法来检查是否从导入的图像类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进行绘图? Image和其他Actor是用于使用舞台,可以轻松处理您的触摸事件和绘图。
这样创建它们:
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();
+0
真棒,这有助于很多,但你知道我会如何使用它来听方法touchDragged()或touchDown()? – 2012-11-01 15:45:27
看到这样的问题:HTTP:/ /stackoverflow.com/questions/9236175/how-to-detect-when-an-actor-is-touched-in-libgdx/9239327#9239327,它可能会帮助你在输入处理演员 – Ludevik 2012-04-24 18:09:12