如何在Ashley中使用Signal / Listener类

时间:2016-04-02 16:27:09

标签: libgdx

LibGdx Ashley系统包含一个包signals的包Signal和一个界面Listener。关于何时/为什么/如何实际使用这些文档非常不清楚。 根据文档,Signal用于

  

...将事件分派给多个侦听器

Listener

  

......用来听信号。

除此之外没有任何其他信息。有谁知道这些实际上是如何使用的?

1 个答案:

答案 0 :(得分:0)

我从未与阿什利合作,但我想这只是一个观察者模式。您可以创建一个Signal.add个对象来实现Listener。每当signal.dispatch(myObject)所有这些侦听器添加到该信号时都会触发receive(Signal<T> signal, T object)。在这里,您可以访问信号以及随之发送的对象。

当你有一对多关系时,你可以使用观察者模式。一个例子可以是带轮子的方向盘。你的车轮实现了听众,方向盘有一个信号。无论何时转动方向盘,您都会向车轮“发送”信号,通知车轮转向。

如果你不理解观察者模式,我建议你先学习。从reading this开始,创建此模式的一些基本实现,直到您理解为止。

Here is a test that shows exactly how to use Signal