This class manages event listener subscriptions and event dispatching. More...
#include <CCEventDispatcher.h>
Classes | |
class | EventListenerVector |
The vector to store event listeners with scene graph based priority and fixed priority. More... | |
Public Member Functions | |
void | addEventListenerWithSceneGraphPriority (EventListener *listener, Node *node) |
Adds a event listener for a specified event with the priority of scene graph. More... | |
local | addEventListenerWithSceneGraphPriority ( local listener, local node) |
Adds a event listener for a specified event with the priority of scene graph. More... | |
void | addEventListenerWithFixedPriority (EventListener *listener, int fixedPriority) |
Adds a event listener for a specified event with the fixed priority. More... | |
EventListenerCustom * | addCustomEventListener (const std::string &eventName, const std::function< void(EventCustom *)> &callback) |
Adds a Custom event listener. More... | |
local | addCustomEventListener ( local eventName, local callback) |
Adds a Custom event listener. More... | |
void | removeEventListener (EventListener *listener) |
Remove a listener. More... | |
void | removeEventListenersForType (EventListener::Type listenerType) |
Removes all listeners with the same event listener type. More... | |
void | removeEventListenersForTarget (Node *target, bool recursive=false) |
Removes all listeners which are associated with the specified target. More... | |
void | removeCustomEventListeners (const std::string &customEventName) |
Removes all custom listeners with the same event name. More... | |
void | removeAllEventListeners () |
Removes all listeners. More... | |
void | pauseEventListenersForTarget (Node *target, bool recursive=false) |
Pauses all listeners which are associated the specified target. More... | |
local | pauseEventListenersForTarget ( local target, local false) |
Pauses all listeners which are associated the specified target. More... | |
void | resumeEventListenersForTarget (Node *target, bool recursive=false) |
Resumes all listeners which are associated the specified target. More... | |
local | resumeEventListenersForTarget ( local target, local false) |
Resumes all listeners which are associated the specified target. More... | |
void | setPriority (EventListener *listener, int fixedPriority) |
Sets listener's priority with fixed value. More... | |
void | setEnabled (bool isEnabled) |
Whether to enable dispatching events. More... | |
bool | isEnabled () const |
Checks whether dispatching events is enabled. More... | |
void | dispatchEvent (Event *event) |
Dispatches the event. More... | |
void | dispatchCustomEvent (const std::string &eventName, void *optionalUserData=nullptr) |
Dispatches a Custom Event with a event name an optional user data. More... | |
EventDispatcher () | |
Constructor of EventDispatcher. More... | |
~EventDispatcher () | |
Destructor of EventDispatcher. More... | |
![]() | |
void | retain () |
Retains the ownership. More... | |
void | release () |
Releases the ownership immediately. More... | |
Ref * | autorelease () |
Releases the ownership sometime soon automatically. More... | |
unsigned int | getReferenceCount () const |
Returns the Ref's current reference count. More... | |
virtual | ~Ref () |
Destructor. More... | |
Protected Types | |
enum | DirtyFlag { NONE = 0, FIXED_PRIORITY = 1 << 0, SCENE_GRAPH_PRIORITY = 1 << 1, ALL = FIXED_PRIORITY | SCENE_GRAPH_PRIORITY } |
Priority dirty flag. More... | |
Protected Member Functions | |
void | setDirtyForNode (Node *node) |
Sets the dirty flag for a node. More... | |
void | addEventListener (EventListener *listener) |
Adds an event listener with item. More... | |
local | addEventListener ( local listener) |
Adds an event listener with item. More... | |
void | forceAddEventListener (EventListener *listener) |
Force adding an event listener. More... | |
EventListenerVector * | getListeners (const EventListener::ListenerID &listenerID) |
Gets event the listener list for the event listener type. More... | |
local | getListeners ( local listenerID) |
Gets event the listener list for the event listener type. More... | |
void | updateDirtyFlagForSceneGraph () |
Update dirty flag. More... | |
void | removeEventListenersForListenerID (const EventListener::ListenerID &listenerID) |
Removes all listeners with the same event listener ID. More... | |
void | sortEventListeners (const EventListener::ListenerID &listenerID) |
Sort event listener. More... | |
void | sortEventListenersOfSceneGraphPriority (const EventListener::ListenerID &listenerID, Node *rootNode) |
Sorts the listeners of specified type by scene graph priority. More... | |
void | sortEventListenersOfFixedPriority (const EventListener::ListenerID &listenerID) |
Sorts the listeners of specified type by fixed priority. More... | |
void | updateListeners (Event *event) |
Updates all listeners 1) Removes all listener items that have been marked as 'removed' when dispatching event. More... | |
void | dispatchTouchEvent (EventTouch *event) |
Touch event needs to be processed different with other events since it needs support ALL_AT_ONCE and ONE_BY_NONE mode. More... | |
void | associateNodeAndEventListener (Node *node, EventListener *listener) |
Associates node with event listener. More... | |
local | associateNodeAndEventListener ( local node, local listener) |
Associates node with event listener. More... | |
void | dissociateNodeAndEventListener (Node *node, EventListener *listener) |
Dissociates node with event listener. More... | |
void | dispatchEventToListeners (EventListenerVector *listeners, const std::function< bool(EventListener *)> &onEvent) |
Dispatches event to listeners with a specified listener type. More... | |
void | setDirty (const EventListener::ListenerID &listenerID, DirtyFlag flag) |
Sets the dirty flag for a specified listener ID. More... | |
void | visitTarget (Node *node, bool isRootNode) |
Walks though scene graph to get the draw order for each node, it's called before sorting event listener with scene graph priority. More... | |
![]() | |
Ref () | |
Constructor. More... | |
Ref () | |
Constructor. More... | |
Protected Attributes | |
std::unordered_map < EventListener::ListenerID, EventListenerVector * > | _listenerMap |
Listeners map. More... | |
std::unordered_map < EventListener::ListenerID, DirtyFlag > | _priorityDirtyFlagMap |
The map of dirty flag. More... | |
std::unordered_map< Node *, std::vector< EventListener * > * > | _nodeListenersMap |
The map of node and event listeners. More... | |
std::unordered_map< Node *, int > | _nodePriorityMap |
The map of node and its event priority. More... | |
std::unordered_map< float, std::vector< Node * > > | _globalZOrderNodeMap |
key: Global Z Order, value: Sorted Nodes More... | |
std::vector< EventListener * > | _toAddedListeners |
The listeners to be added after dispatching event. More... | |
std::set< Node * > | _dirtyNodes |
The nodes were associated with scene graph based priority listeners. More... | |
int | _inDispatch |
Whether the dispatcher is dispatching event. More... | |
bool | _isEnabled |
Whether to enable dispatching event. More... | |
int | _nodePriorityIndex |
std::set< std::string > | _internalCustomListenerIDs |
local | _internalCustomListenerIDs |
![]() | |
unsigned int | _referenceCount |
count of references More... | |
local | _referenceCount |
count of references More... | |
Friends | |
class | Node |
This class manages event listener subscriptions and event dispatching.
The EventListener list is managed in such a way that event listeners can be added and removed even from within an EventListener, while events are being dispatched.
EventDispatcher | ( | ) |
Constructor of EventDispatcher.
local EventDispatcher | ( | ) |
Constructor of EventDispatcher.
~EventDispatcher | ( | ) |
Destructor of EventDispatcher.
local ~EventDispatcher | ( | ) |
Destructor of EventDispatcher.
EventListenerCustom* addCustomEventListener |
( | const std::string & | eventName, |
const std::function< void(EventCustom *)> & | callback | ||
) |
Adds a Custom event listener.
It will use a fixed priority of 1.
eventName | A given name of the event. |
callback | A given callback method that associated the event name. |
local addCustomEventListener | ( | local | eventName, |
local | callback | ||
) |
Adds a Custom event listener.
It will use a fixed priority of 1.
eventName | A given name of the event. |
callback | A given callback method that associated the event name. |
|
protected |
Adds an event listener with item.
|
protected |
Adds an event listener with item.
void addEventListenerWithFixedPriority |
( | EventListener * | listener, |
int | fixedPriority | ||
) |
Adds a event listener for a specified event with the fixed priority.
listener | The listener of a specified event. |
fixedPriority | The fixed priority of the listener. |
local addEventListenerWithFixedPriority |
( | local | listener, |
local | fixedPriority | ||
) |
Adds a event listener for a specified event with the fixed priority.
listener | The listener of a specified event. |
fixedPriority | The fixed priority of the listener. |
void addEventListenerWithSceneGraphPriority |
( | EventListener * | listener, |
Node * | node | ||
) |
Adds a event listener for a specified event with the priority of scene graph.
listener | The listener of a specified event. |
node | The priority of the listener is based on the draw order of this node. |
local addEventListenerWithSceneGraphPriority |
( | local | listener, |
local | node | ||
) |
Adds a event listener for a specified event with the priority of scene graph.
listener | The listener of a specified event. |
node | The priority of the listener is based on the draw order of this node. |
|
protected |
Associates node with event listener.
|
protected |
Associates node with event listener.
void dispatchCustomEvent | ( | const std::string & | eventName, |
void * | optionalUserData = nullptr |
||
) |
Dispatches a Custom Event with a event name an optional user data.
eventName | The name of the event which needs to be dispatched. |
optionalUserData | The optional user data, it's a void*, the default value is nullptr. |
local dispatchCustomEvent | ( | local | eventName, |
local | optionalUserData = nullptr |
||
) |
Dispatches a Custom Event with a event name an optional user data.
eventName | The name of the event which needs to be dispatched. |
optionalUserData | The optional user data, it's a void*, the default value is nullptr. |
void dispatchEvent | ( | Event * | event | ) |
Dispatches the event.
Also removes all EventListeners marked for deletion from the event dispatcher list.
event | The event needs to be dispatched. |
local dispatchEvent | ( | local | event | ) |
Dispatches the event.
Also removes all EventListeners marked for deletion from the event dispatcher list.
event | The event needs to be dispatched. |
|
protected |
Dispatches event to listeners with a specified listener type.
|
protected |
Dispatches event to listeners with a specified listener type.
|
protected |
Touch event needs to be processed different with other events since it needs support ALL_AT_ONCE and ONE_BY_NONE mode.
|
protected |
Touch event needs to be processed different with other events since it needs support ALL_AT_ONCE and ONE_BY_NONE mode.
|
protected |
Dissociates node with event listener.
|
protected |
Dissociates node with event listener.
|
protected |
Force adding an event listener.
|
protected |
Force adding an event listener.
|
protected |
Gets event the listener list for the event listener type.
|
protected |
Gets event the listener list for the event listener type.
bool isEnabled | ( | ) | const |
Checks whether dispatching events is enabled.
local isEnabled | ( | ) |
Checks whether dispatching events is enabled.
void pauseEventListenersForTarget | ( | Node * | target, |
bool | recursive = false |
||
) |
Pauses all listeners which are associated the specified target.
target | A given target node. |
recursive | True if pause recursively, the default value is false. |
local pauseEventListenersForTarget | ( | local | target, |
local | recursive = false |
||
) |
Pauses all listeners which are associated the specified target.
target | A given target node. |
recursive | True if pause recursively, the default value is false. |
void removeAllEventListeners | ( | ) |
Removes all listeners.
local removeAllEventListeners | ( | ) |
Removes all listeners.
void removeCustomEventListeners | ( | const std::string & | customEventName | ) |
Removes all custom listeners with the same event name.
customEventName | A given event listener name which needs to be removed. |
local removeCustomEventListeners | ( | local | customEventName | ) |
Removes all custom listeners with the same event name.
customEventName | A given event listener name which needs to be removed. |
void removeEventListener | ( | EventListener * | listener | ) |
Remove a listener.
listener | The specified event listener which needs to be removed. |
local removeEventListener | ( | local | listener | ) |
Remove a listener.
listener | The specified event listener which needs to be removed. |
|
protected |
Removes all listeners with the same event listener ID.
|
protected |
Removes all listeners with the same event listener ID.
void removeEventListenersForTarget | ( | Node * | target, |
bool | recursive = false |
||
) |
Removes all listeners which are associated with the specified target.
target | A given target node. |
recursive | True if remove recursively, the default value is false. |
local removeEventListenersForTarget | ( | local | target, |
local | recursive = false |
||
) |
Removes all listeners which are associated with the specified target.
target | A given target node. |
recursive | True if remove recursively, the default value is false. |
void removeEventListenersForType | ( | EventListener::Type | listenerType | ) |
Removes all listeners with the same event listener type.
listenerType | A given event listener type which needs to be removed. |
local removeEventListenersForType | ( | local | listenerType | ) |
Removes all listeners with the same event listener type.
listenerType | A given event listener type which needs to be removed. |
void resumeEventListenersForTarget | ( | Node * | target, |
bool | recursive = false |
||
) |
Resumes all listeners which are associated the specified target.
target | A given target node. |
recursive | True if resume recursively, the default value is false. |
local resumeEventListenersForTarget | ( | local | target, |
local | recursive = false |
||
) |
Resumes all listeners which are associated the specified target.
target | A given target node. |
recursive | True if resume recursively, the default value is false. |
|
protected |
Sets the dirty flag for a specified listener ID.
|
protected |
Sets the dirty flag for a specified listener ID.
|
protected |
Sets the dirty flag for a node.
|
protected |
Sets the dirty flag for a node.
void setEnabled | ( | bool | isEnabled | ) |
Whether to enable dispatching events.
isEnabled | True if enable dispatching events. |
local setEnabled | ( | local | isEnabled | ) |
Whether to enable dispatching events.
isEnabled | True if enable dispatching events. |
void setPriority | ( | EventListener * | listener, |
int | fixedPriority | ||
) |
Sets listener's priority with fixed value.
listener | A given listener. |
fixedPriority | The fixed priority value. |
local setPriority | ( | local | listener, |
local | fixedPriority | ||
) |
Sets listener's priority with fixed value.
listener | A given listener. |
fixedPriority | The fixed priority value. |
|
protected |
Sort event listener.
|
protected |
Sort event listener.
|
protected |
Sorts the listeners of specified type by fixed priority.
|
protected |
Sorts the listeners of specified type by fixed priority.
|
protected |
Sorts the listeners of specified type by scene graph priority.
|
protected |
Sorts the listeners of specified type by scene graph priority.
|
protected |
Update dirty flag.
|
protected |
Update dirty flag.
|
protected |
Updates all listeners 1) Removes all listener items that have been marked as 'removed' when dispatching event.
2) Adds all listener items that have been marked as 'added' when dispatching event.
|
protected |
Updates all listeners 1) Removes all listener items that have been marked as 'removed' when dispatching event.
2) Adds all listener items that have been marked as 'added' when dispatching event.
|
protected |
Walks though scene graph to get the draw order for each node, it's called before sorting event listener with scene graph priority.
|
protected |
Walks though scene graph to get the draw order for each node, it's called before sorting event listener with scene graph priority.
|
friend |
|
protected |
The nodes were associated with scene graph based priority listeners.
|
protected |
The nodes were associated with scene graph based priority listeners.
|
protected |
key: Global Z Order, value: Sorted Nodes
|
protected |
key: Global Z Order, value: Sorted Nodes
|
protected |
Whether the dispatcher is dispatching event.
|
protected |
Whether the dispatcher is dispatching event.
|
protected |
|
protected |
|
protected |
Whether to enable dispatching event.
|
protected |
Whether to enable dispatching event.
|
protected |
Listeners map.
|
protected |
Listeners map.
|
protected |
The map of node and event listeners.
|
protected |
The map of node and event listeners.
|
protected |
|
protected |
|
protected |
The map of node and its event priority.
|
protected |
The map of node and its event priority.
|
protected |
The map of dirty flag.
|
protected |
The map of dirty flag.
|
protected |
The listeners to be added after dispatching event.
|
protected |
The listeners to be added after dispatching event.