Pygame 主循环外的编程控制
Programming controls outside of the main loop in Pygame
我想做的是在另一个模块中为某个事物定义控件,该模块定义该事物的所有其他内容,然后 运行 通过函数从主循环中进行控件。
尝试用函数调用它的问题,根据我的尝试,函数看到的事件只匹配函数在程序开始时定义的事件而不是当前事件;意思是,没有事件。
这是我的意思的一个例子:
主文件
from pygameinitmodule import *
import othermodule
#event_list = pygame.event.get() is run in pygameinitmodule to define it for all modules
running = True
while running:
#updating the event_list
event_list = pygame.event.get()
if certaingamestate:
othermodule.controlFunction()
其他模块
from pygameinitmodule import *
def controlFunction():
global event_list
for event in event_list:
# controls here
然后如果我要 运行 代码,控件将不起作用。但是,如果我将函数中的完全相同的代码放入主循环中,它就可以正常工作。有没有另一种方法我应该做这样的事情,或者我在忽略一个关键部分的同时大部分都做对了?
编辑:对于将其标记为重复的人,事实并非如此。您将此标记为重复的问题关注的是另一件事。
您可以将事件列表作为参数传递给函数:
other_module.py
def controlFunction(event_list):
for event in event_list:
# do stuff
并且在主循环中这样使用:
main_file.py
while True:
event_list = pygame.event.get()
controlFunction(event_list)
或者只是 import pygame
在另一个文件中并在那里获取事件(但是,不建议使用这种方法,因为它会从队列中删除事件并且无法从其他地方检索它们):
other_module.py
import pygame
def controlFunction():
for event in pygame.event.get():
# do stuff
我想做的是在另一个模块中为某个事物定义控件,该模块定义该事物的所有其他内容,然后 运行 通过函数从主循环中进行控件。
尝试用函数调用它的问题,根据我的尝试,函数看到的事件只匹配函数在程序开始时定义的事件而不是当前事件;意思是,没有事件。
这是我的意思的一个例子:
主文件
from pygameinitmodule import *
import othermodule
#event_list = pygame.event.get() is run in pygameinitmodule to define it for all modules
running = True
while running:
#updating the event_list
event_list = pygame.event.get()
if certaingamestate:
othermodule.controlFunction()
其他模块
from pygameinitmodule import *
def controlFunction():
global event_list
for event in event_list:
# controls here
然后如果我要 运行 代码,控件将不起作用。但是,如果我将函数中的完全相同的代码放入主循环中,它就可以正常工作。有没有另一种方法我应该做这样的事情,或者我在忽略一个关键部分的同时大部分都做对了?
编辑:对于将其标记为重复的人,事实并非如此。您将此标记为重复的问题关注的是另一件事。
您可以将事件列表作为参数传递给函数:
other_module.py
def controlFunction(event_list):
for event in event_list:
# do stuff
并且在主循环中这样使用:
main_file.py
while True:
event_list = pygame.event.get()
controlFunction(event_list)
或者只是 import pygame
在另一个文件中并在那里获取事件(但是,不建议使用这种方法,因为它会从队列中删除事件并且无法从其他地方检索它们):
other_module.py
import pygame
def controlFunction():
for event in pygame.event.get():
# do stuff