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方法