gpt4 book ai didi

java - 如何在 for 循环中使用 invalidate()

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:53 26 4
gpt4 key购买 nike

我想显示我正在开发的游戏的镜头。但 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();
}
}
});
}

关于java - 如何在 for 循环中使用 invalidate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58341392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com