我在使用pygame遇到了一些麻烦,同时通过网格上的路径让角色在屏幕上移动。我正在收集脏帐户,但.update()
方法没有考虑到这些,但更新了整个屏幕。这只发生在主游戏循环内的一个循环中。结构是这样的:
while not done:
do other stuff
if character should move:
for step in path:
while not in target:
update coordinates by a couple pixels
blit and collect dirty rects
update(dirty_rects) #this one still updates the whole screen
update(dirty_rects) #this one works correctly, only updating dirty places
因此内循环根据给定路径中的步骤移动角色,然后游戏返回主循环。问题是,内部.update()
再次绘制整个屏幕,即使我给它一个像Rect(0,0,10,10)
这样的小矩形作为输入。但外部.update()
工作得很好。当角色移动时,情况显然会破坏帧速率。每帧之间需要大约70ms,而外环大约需要5ms。我能做些什么吗?
我在OS X上使用Python 3.4.2,现在更新到3.4.3但没有效果。
E:我也尝试在linux上安装pygame。在那方面,在python 3.4.0上没有脏rects的问题,但其他的东西似乎搞砸了,比如处理颜色键和alphas。
视频: