今天晚上,我问了一个与之相关的问题,但我意识到它的陈述和写作都很糟糕。这次我会说得更具体一点。在
我有以下代码,它在一个游戏类(从Canvas类继承而来)内:
def move_ball(self):
if self.balldir==0:
self.move(self.ball,0,-10)
elif self.balldir==1:
self.move(self.ball,0,10)
root.after(20,self.move_ball)
这个方法是用来在画布上移动一个球self.balldir公司. 如果是0,它向上移动;如果是1,它向下移动。在
它可以在几秒钟内正常工作,但它只会使游戏越来越慢,直到完全停止。我试过了时间。睡觉同样,但它不适合Tkinter(你可能已经知道了)。在
我认为问题在于root.after()
的使用,但我真的不知道有其他方法可以无限期地移动对象。在
20毫秒似乎是一个很短的计划时间,可能会调整一些我不知道的平台依赖性。您的代码片段中也不清楚可以为
balldir
指定哪些值。如果您希望balldir
永远是0或1,您可能会发现这很有帮助:在您的代码片段中,如果balldir不在[0,1]中,球将停止移动,并且不会给出原因的指示。防御性地进行程序设计,尤其是在开始时,如果:
^{pr2}$其中ValueError将阻止程序静默中断。在
相关问题 更多 >
编程相关推荐