为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村9548890 2023-10-13 14:33:52
我想展示我正在制作的游戏的镜头。但画布在我的 for 循环结束时就失效了。这是同样的问题,就像这里画布不会更新(无效)直到整个 while 循环结束 但答案对我不起作用。在这种情况下如何使我的画布无效?: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();}在射击功能中,我计算所有位置。镜头将通过,然后我想在画布上显示这些位置,但这不起作用。
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

尝试这个:


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();

            }

        }

    });

}


查看完整回答
反对 回复 2023-10-13
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信