我对Android工作室很新,我希望这个函数循环并创建一个无限的球落循环,它将被评分直到两个整数不匹配但是当我尝试运行它时,它只会循环一次,如果我改变应用程序崩溃的streak = 2
语句中的else
public void mainGameLoop(){
do {
//sets Balls integer
setColourint();
ball.setVisibility(View.VISIBLE);
//ball fall
float bottomOfScreen = getResources().getDisplayMetrics()
.heightPixels - (ball.getHeight() * 4);
//fall animation
ball.animate()
.translationY(bottomOfScreen)
.setInterpolator(new AccelerateInterpolator())
.setInterpolator(new BounceInterpolator())
.setDuration(9000);
//once animation is complete compares balls variable with current variable
if (colourint == ranint){
//if they are same then +1 score
score = score+1;
scr.setText(Integer.parseInt(String.valueOf(score)));
} else {
//else game is over
streak = 2;
}
//repeat until game is over
} while (streak == 1);
}
一旦球到达相对布局的底部,我希望函数检查setcoulour int
和ran int
是否相同然后如果是score = score + 1
,则球返回在顶部,setColourInt
函数被调用并且球再次落下(等等)但是如果不是循环结束并且它的游戏结束......我为我明显无能而道歉但我无法想象你们不记得你们什么时候,这对于编码是否天真。非常感谢汤姆
答案 0 :(得分:0)
您必须让UI有机会绘制您正在做的事情。您对其进行编码的方式,无论哪种方法(onStart
,onCreate
等)调用您的mainGameLoop
都将永远不会返回,因为它会陷入无限循环。这是一个错误。
执行此操作的一种方法是创建View
并使用onDraw
方法实现游戏绘制逻辑。 UI线程将在绘制时调用您的onDraw
方法。这是一篇讨论这种方法的文章:http://cjds.github.io/2014/04/28/Creating-a-simple-android-game/