def colision(self):
if self.coords(self.bola)[1]<50:
self.boladir=1
if self.coords(self.bola)[1]>870:
self.jugando=0
self.pierde()
# ladrillos=self.find_withtag("brick")
def mueve_bola(self):
if self.jugando:
if self.boladir==0:
self.move(self.bola,0,-10)
elif self.boladir==1:
self.move(self.bola,0,10)
self.colision()
root.after(velocidad_bola,self.mueve_bola)
-1
A
回答
1
colision
调用本身,所以本场比赛开始时,这将每隔20毫秒调用。 mueve_bola also calls itself every 20ms. However,
mueve_bola _also_ calls
colision . So, every 20ms,
colision creates another unending stream of calls to itself every 20ms. 20 ms later
mueve_bola calls
colision again, which again starts another stream of calls every 20ms. After just one second
colision is being called 50 times every 20ms. After two seconds it will be 100 calls to
colision every 20 ms. Do you see the problem? In very little time you will have millions of calls to
colision每秒钟。
您只需要在移动物体时计算碰撞,所以不需要每20ms调用一次自身。每次更新显示时只需要调用一次。
我建议你创建一个每40ms左右调用一次的方法。在这里你可以一次调整所有的坐标。更新行的坐标,然后更新玩家的桨,然后更新球,然后检查碰撞。
相关问题
- 1. ObservableArray导致应用程序停止
- 2. 导入liraries导致tkinter gui停止工作
- 3. 致命例外 - 不幸的应用程序已停止工作
- 4. C#应用程序停止工作
- 5. Android应用程序停止工作-Eclipse
- 6. 应用程序停止工作
- 7. setOnItemSelectedListener:应用程序停止工作
- 8. 应用程序已停止工作
- 9. 通过外部应用程序打开的新工作簿导致宏停止
- 10. VB.NET Me.Close()导致应用程序抛出“已停止工作”消息
- 11. Spring @RepositoryRestController导致@PageableDefault停止工作
- 12. driver.quit()导致“火狐停止工作”
- 13. VB Treeview导致vs32host.exe停止工作
- 14. @EJB批注导致servlet停止工作
- 15. 后退按钮导致应用程序停止响应
- 16. AngularJS函数调用导致应用程序停止
- 17. onTouchEvent()导致“不幸的应用程序已停止”
- 18. this.getWritableDatabase()导致我的Android应用程序停止
- 19. 的BackgroundWorker的ShowDialog导致应用程序停止
- 20. 启动我的应用程序导致iPod音乐停止
- 21. 这是否导致我的应用程序停止?
- 22. Android MediaPlayer最终导致应用程序停止
- 23. 应用程序从任务调度程序停止工作
- 24. Microsoft安装程序引导程序已停止工作
- 25. tkinter overrideredirect停止输入工作
- 26. tkinter中的代码停止工作(self)
- 27. 应用停止工作
- 28. 不幸停止应用程序停止
- 29. 代码“应该”工作,但程序停止工作
- 30. 为什么这段代码会导致我的程序停止工作?
太棒了!是的,现在我看到了我做出的巨大错误^^你绝对是对的!我会尽力按照你的说法去做:单一方法移动所有东西将会更容易实现......谢谢! – dhcarmona 2011-06-13 20:30:50