我需要能够在处理keydown事件时移动鼠标。
我该怎么做?
这是我现在使用的基本代码:
import pygame, sys
from pygame.locals import *
pygame.init()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == USEREVENT + 1:
rotate = True;
if event.type == KEYDOWN:
if event.key == K_LEFT or event.key == K_a:
moveX = -1*moveSpeed
elif event.key == K_RIGHT or event.key == K_d:
moveX = moveSpeed
if event.key == K_DOWN or event.key == K_s:
moveY = moveSpeed
elif event.key == K_UP or event.key == K_w:
moveY = -1*moveSpeed
在以下脚本运行时我无法移动鼠标,而我按下了一个键..
答案 0 :(得分:2)
你的循环的主要问题是你在“帧”之间没有延迟 - 也就是你只是以最大CPU速度循环事件循环 - 这使得按键生成很多(很多意思可能大约数百万)已读取的按键事件。
所以:
pygame.time.delay(x)
介于15到100之间 - 这会给你这么多
互动间暂停的几毫秒pygame.event.pump()
调用 - 这将保持他的事件
缓冲流动,防止细微的不良行为
不同的系统-1*moveSpeed
”之类的东西
获取变量的负值 - 只需使用“-moveSpeed
”
代替。此外,这应该可以阻止冻结,但是pygame只能在自己的显示窗口内捕获鼠标或键事件 - 你没有初始化 - 你必须调用pygame.display.set_mode
来实际看到的东西。