pygame在重新初始化后没有收到滚动事件

问题描述

我正在为学校项目制作游戏,我的游戏中有滚动内容。我需要重新初始化 pygame 以确保每个都被重置。但不知何故,重新初始化 pygame 后滚动停止工作。

我编写了一个简单的脚本来测试是否真的如此,并且确实如此。

@media screen and (min-width:1000px){
 $font-sm:      13px;
 $font-default: 15px;
 $font-md:      18px;
}
@media screen and (max-width:999px){
 $font-sm:      10px;
 $font-default: 12px;
 $font-md:      14px;
}

它获得左键点击事件,而不是滚动事件。 有什么办法可以解决这个问题吗?

解决方法

不要使用 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()

顺便说一句,新年快乐,祝你好运~