我想显示我正在开发的游戏的镜头。但 Canvas 在结束时就失效了我的for循环。这是同样的问题,就像这里 Canvas do not update (invalidate) until whole while loop ends但答案对我不起作用。在这种情况下如何使我的 Canvas 无效?:
else if (event.getX() > 1150 && event.getX() < 1300
&& event.getY() > 550 && event.getY() < 700)
{
System.out.println("Schuss");
final ArrayList<Shot> positions = game.shot(100, 45, canvas);
new Thread(new Runnable()
{
public void run()
{
for (int i = 0; i < positions.size(); i++)
{
game.setCurrentShot(positions.get(i));
System.out.println(i);
canvas.postInvalidate();
}
}
}).start();
}
在射击函数中,我计算所有位置。镜头将通过,然后我想在 Canvas 上显示这些位置,但这不起作用。
试试这个:
else if (event.getX() > 1150 && event.getX() < 1300 && event.getY() > 550 && event.getY() < 700)
{
System.out.println("Schuss");
final ArrayList<Shot> positions = game.shot(100, 45, canvas);
YourActivity.this.runOnUiThread(new Runnable() {
public void run() {
for (int i = 0; i < positions.size(); i++)
{
game.setCurrentShot(positions.get(i));
Log.d("YourApp", "i = "+i);
canvas.invalidate();
}
}
});
}
我是一名优秀的程序员,十分优秀!