对象跟随鼠标

时间:2014-08-03 13:56:43

标签: python pygame

我正在创建一个简单的pygame应用程序,其中一个对象跟随鼠标。 但是,我注意到对象和鼠标运动之间存在1/2帧的延迟,即使帧不受限制。 这是代码:

import pygame,sys
from pygame.locals import *

class MainLoop(object):
    def __init__(self):
        pygame.init()
        self.screen=pygame.display.set_mode((640,480))
        self.clock=pygame.time.Clock()
        self.fps=60
        self.square=pygame.Rect(0,0,64,64)

    def eventloop(self):
        for event in pygame.event.get():
            if event.type==QUIT:
                pygame.quit()
                sys.exit()
            if event.type==MOUSEMOTION:
                self.square.center=pygame.mouse.get_pos()

    def update(self):
        pass

    def draw(self):
        self.screen.fill((255,255,255))
        pygame.draw.rect(self.screen,(0,0,0),self.square,1)

    def loop(self):
        while True:
            self.eventloop()
            self.update()
            self.draw()
            pygame.display.update()
            self.clock.tick()

if __name__ == "__main__":
    app = MainLoop()
    app.loop()
    pygame.quit()
    sys.exit()

1 个答案:

答案 0 :(得分:0)

这与鼠标光标的渲染方式有关。基本上你是在使用你的操作系统的鼠标渲染(我认为这也称为"硬件鼠标/光标"),它更新它的位置并且比你的软件更频繁地呈现#39;帧速率。

如果您禁用硬件鼠标/光标渲染并手动放置鼠标图标,您将意识到您的矩形和鼠标位置将会更新而不会延迟。 (我认为这很明显,但我还是想提一下)