我正在创建一个简单的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()
答案 0 :(得分:0)
这与鼠标光标的渲染方式有关。基本上你是在使用你的操作系统的鼠标渲染(我认为这也称为"硬件鼠标/光标"),它更新它的位置并且比你的软件更频繁地呈现#39;帧速率。
如果您禁用硬件鼠标/光标渲染并手动放置鼠标图标,您将意识到您的矩形和鼠标位置将会更新而不会延迟。 (我认为这很明显,但我还是想提一下)