擅长:python、mysql、java
<p>我现在所做的是有一些输入收集类/函数/线程,它将检查预定义键->事件绑定的列表。在</p>
<p>像这样:</p>
<pre><code>class InputHandler:
def __init__ (self, eventDispatcher):
self.keys = {}
self.eventDispatcher = eventDispatcher
def add_key_binding (self, key, event):
self.keys.update((key, event,))
def gather_input (self):
for event in pygame.event.get():
if event.type == KEYDOWN:
event = self.keys.get(event.key, None)
if not event is None:
self.eventDispatcher.dispatch(event)
....
inputHandler = InputHandler(EventDispatcher)
inputHandler.add_key_binding(K_q, "quit_event")
...
inputHandler.gather_input()
....
</code></pre>
<p>这基本上就是superjoe30所做的,除了不直接调用回调之外,我通过使用事件调度系统添加了另一个级别的分离,这样任何关心按键被按下的代码都只需监听该事件。在</p>
<p>此外,键可以很容易地绑定到不同的事件,这些事件可以从配置文件或其他文件中读取,任何未绑定到事件的键都会被忽略。在</p>