我正在制作游戏。在游戏中,下面列出了一个名为movement()的方法,可以向下移动一个圆圈。一旦圆圈tbc的y值大于yc的y值,我希望游戏运行gamelost()方法。所以基本上一旦tbc从手机屏幕的顶部落到yc之后,游戏就会运行gamelost()方法。
我尝试在move()之后将if语句放在main方法中;甚至在运动()方法中,对于这两个游戏都没有说游戏结束......相反,圆圈刚好从屏幕顶部下方到底部消失。我做错什么了吗。有人可以帮帮我吗?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onCreateNew();
play.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
onPlayClick();
getColor();
movement();
}
});
protected void movement(){
final int delay = delay();
h.postDelayed(new Runnable() {
public void run() {
tgc.setY(tgc.getY() + 8);
tbc.setY(tbc.getY() + 8);
trc.setY(trc.getY() + 8);
tyc.setY(tyc.getY() + 8);
h.postDelayed(this, delay);
}
},delay);
if (tbc.getY() > yc.getY()){
gameLost();
} }
}
答案 0 :(得分:1)
欢迎使用异步编程。
PostDelayed正在启动异步线程。因此,检查gameLost的代码应该在新的Runnable
中protected void movement(){
final int delay = delay();
h.postDelayed(new Runnable() {
public void run() {
tgc.setY(tgc.getY() + 8);
tbc.setY(tbc.getY() + 8);
trc.setY(trc.getY() + 8);
tyc.setY(tyc.getY() + 8);
if (tbc.getY() > yc.getY()){
gameLost();
}
h.postDelayed(this, delay);
}
},delay);
}
}