我正在为学校项目制作一个游戏,游戏中有滚动的内容。我需要重新安装pygame以确保每个都被重置。但不知何故,在重新启动pygame后,滚动就停止了。
我制作了一个简单的脚本来测试是否真的是这样,事实确实如此。
import pygame
def main():
while True:
pygame.init()
screen = pygame.display.set_mode([1280, 720])
pygame.display.set_caption("PYGAME DOES NOT RECEIVE SCROLL EVENT AFTER RE-INIT?")
frame = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
print("left click")
elif event.button == 4:
print("scroll up")
elif event.button == 5:
print("scroll down")
if event.type == pygame.QUIT:
running = False
frame.tick(30)
pygame.quit()
if __name__ == "__main__":
main()
它得到左键点击事件,但没有滚动事件。有什么办法解决这个问题吗?
不要使用pygame.MOUSEBUTTONDOWN
进行滚动。
我为您找到了另一种使用pygame.MOUSEWHEEL
进行地图滚动的方法。
这是修改后的代码:
import pygame
def main():
while True:
pygame.init()
screen = pygame.display.set_mode([1280, 720])
pygame.display.set_caption("PYGAME DOES NOT RECEIVE SCROLL EVENT AFTER RE-INIT?")
frame = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
print("left click")
if event.button == 3:
print("right click")
if event.type == pygame.MOUSEWHEEL:
if event.y == 1:
print("scroll up")
if event.y == -1:
print("scroll down")
if event.type == pygame.QUIT:
running = False
frame.tick(60)
pygame.quit()
if __name__ == "__main__":
main()
顺便说一句,新年快乐,好运伴侣~