emitter,就是pyglet.event.EventDispatcher的子类, 负责发出事件的消息,并且规定了响应消息的函数名。
class Consumer(pyglet.event.EventDispatcher): def call(self): self.dispatch_event('response') Consumer.register_event_type('response')
call方法就是在发送一个叫'response'的事件
listener, 就是一个实现了事件响应函数的类的对象,
class TaxiDriver(object): def __init__(self, DidiApp): DidiApp.push_handlers(self) def response(self): print("I'm coming soon!")
需要将自己传递给emittor, 并且实现上面的response方法
运行:
c = Consumer() t = TaxiDriver(c) c.call()
当c调用call方法的时候,就发出了"response"事件消息,然后遍历执行handlers中的response方法