带有脏rects的Pygame display.update()仍会更新整个屏幕

时间:2015-04-09 17:53:26

标签: python pygame

我在使用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。

视频:

on OS X

on elementary os

0 个答案:

没有答案