首先3.0中使用两个vector来存储事件监听器:
std::vector<EventListener*>* _fixedListeners; 存储fixedListener
std::vector<EventListener*>* _sceneGraphListeners; 存储SceneGraphListener
然后事件通过cocos2dx的EventDispatcher中的dispatchEvent函数来传递,
传递主要针对上述两个ListenerVector
是对fixedListener 和 sceneGraphListener进行排序(fixedListeners按照fixedPriority从小到大的顺序进行排序,sceneGraphListeners按照priority由大到小排序,这里估计是按照显示层级来排序了)
其次,对排序后的两个listeners 数组进行事件传递,传递的原则是首先把事件传递到fixedLisener中优先级<0的Lisener中,如果事件被处理则break终止传递,如果不被处理则传递到sceneListener中,同理不被处理继续传递到fixedListener中优先级>0的Listener中,直到事件被处理或者被丢弃(没有任何节点处理)。
至此完成了一个事件传递过程。