我在pygame上遇到了很大的问题。即使代码尽可能简单,运动总是有点不稳定。尝试运行这个简单的例子,它将矩形移动1个像素,速度为60 FPS:
import sys
import pygame
pygame.init()
display = pygame.display.set_mode((640, 480), pygame.FULLSCREEN)
clock = pygame.time.Clock()
FPS = 60
def motion_test():
rect = pygame.rect.Rect((0, 240), (40, 40))
while 1:
# clear display
display.fill((0, 0, 0))
# check quit
for e in pygame.event.get():
if (e.type == pygame.QUIT or
e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE):
pygame.quit()
sys.exit()
# move the rect by 1 pixel
rect.x += 1
if rect.x >= 640:
rect.x = 0
# draw the rect and flip the display
pygame.draw.rect(display, (255, 0, 0), rect)
pygame.display.flip()
# tick the clock
clock.tick(FPS)
if __name__ == "__main__":
motion_test()
无论我测试什么硬件,矩形都在移动生涩。每隔半秒左右,就会跳起来#34;一点点。它不是平稳运动。
拜托,这让我很生气......有谁知道这会导致什么?它是pygame本身,还是Python的垃圾收集,或操作系统,还是什么?有任何想法吗?你看到同样的例子吗?
(Win7 64bit,Pygame 1.9.1,Python 2.7.3)
**编辑:
我发现pygame时钟对象在限制为60 FPS时不是很准确。我现在用pyglet时钟取代了pygame时钟,现在它好多了。仍然不完美,但更好。