Y继续前进,在Y = 0时将其设置为0;
所以精灵应该从中间到750px然后在我点击之后它应该上升到650 ......我点击它650 px之后它应该下降到750(依此类推)
但是代码并不重要,我想知道的是如何停止在Y上添加+ 5px和Y.stop();或Y.delete();或Y.destroy();
Y + = 5;
对不起这里的代码很少
public int Y,YspriteDown,Yposition;
public boolean AppON = true;
w = Gdx.graphics.getWidth();
h = Gdx.graphics.getHeight();
YspriteDown=h/2+50;
YspriteUp=h/2-50;
batch.begin();
if(AppON= true)
{
Yposition = YspriteDown + Y ;
Y +=5;
if(Yposition == h-50)
{
Y =0;
batch.draw(Assets.sprite1, w / 2 - 16, Yposition);
}
batch.end();
答案 0 :(得分:0)
问题是Clicked变量永远不会设置为false,所以外部循环仍然继续,向y添加5,直到再次等于100,然后y设置为0,循环继续。
简单的解决方法是在if语句中将Clicked变量的值更改为false。
if (Clicked)
{
Y +=5;
batch.draw(Assets.sprite1,w/2-16,Y);
if (Yposition == 100)
{
Y = 0;
batch.draw(Assets.sprite1, w / 2 - 16,h-150);
Clicked = false;
}
}
编辑:
使用新代码,你不应该将Yspritedown设置为0,否则循环会像之前一样继续,它需要以h-50结束并保持在那里,而不是恢复到原来的位置
编辑:
使用新的新代码,需要有一个内部循环来检查精灵是否仍然在移动,无论如何都没有" destroy"变量没有导致NullPointerException,所以做这样的事情
while(appIsRunning){
if(clicked){
boolean doneMoving = false;
y_position += 5
if(Y_Position >= h-50){
y_position = h-50;
batch.draw(arg, arg, arg);
doneMoving = true;
}
}
}