0

我已经使用 SDL 和 PollEvent 方法工作了一段时间,它总是对我很有帮助。然而,在使用了基于 Flash 的引擎后,我尝试创建一个类似于我们在 Flash 中的事件侦听器系统。我在想这样的事情:(伪代码)

GameObject object
object.addEventListener(MOUSE_CLICK, myClickCallback)

但是,我不确定如何以有效的方式进行这项工作。我可以在每一帧上运行 PollEvent,然后遍历场景中的整个 GameObjects 列表:如果在 PollEvent 上接收到的事件是 X,则调用 X 的所有侦听器。但是,这似乎真的很慢。有更好的方法吗?有没有人做过类似的事情?

4

2 回答 2

0

SDL2 有两个函数可以帮助您实现您想要的,而不必自己保留侦听器列表(无论如何,这都是 Flash 在幕后所做的)。

不过,这些并不是“添加侦听器”机制的直接替代品。确保您阅读了文档中的警告!如果您的应用程序是多线程的(并且在 Android 上,无论您是否喜欢它总是如此),那么还有一些额外的注意事项需要注意。

于 2013-11-23T12:56:29.243 回答
0

您可以为每个事件存储一个对象列表。所以当调用 addEventListener 时,你真正在做的是listener_list[MOUSE_CLICK].add(object)

然后你只需要调用每个对象的 myClickCallback 函数。

于 2013-11-22T20:27:45.913 回答