cocos2d-x  3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
EventDispatcher Class Reference

This class manages event listener subscriptions and event dispatching. More...

#include <CCEventDispatcher.h>

Inheritance diagram for EventDispatcher:
Ref

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...
 
EventListenerCustomaddCustomEventListener (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...
 
- Public Member Functions inherited from Ref
void retain ()
 Retains the ownership. More...
 
void release ()
 Releases the ownership immediately. More...
 
Refautorelease ()
 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...
 
EventListenerVectorgetListeners (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...
 
- Protected Member Functions inherited from Ref
 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
- Protected Attributes inherited from Ref
unsigned int _referenceCount
 count of references More...
 
local _referenceCount
 count of references More...
 

Friends

class Node

Detailed Description

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.

Constructor & Destructor Documentation

Constructor of EventDispatcher.

local EventDispatcher ( )

Constructor of EventDispatcher.

Destructor of EventDispatcher.

local ~EventDispatcher ( )

Destructor of EventDispatcher.

Member Function Documentation

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.

Parameters
eventNameA given name of the event.
callbackA given callback method that associated the event name.
Returns
the generated event. Needed in order to remove the event from the dispather
local addCustomEventListener ( local  eventName,
local  callback 
)

Adds a Custom event listener.

It will use a fixed priority of 1.

Parameters
eventNameA given name of the event.
callbackA given callback method that associated the event name.
Returns
the generated event. Needed in order to remove the event from the dispather
void addEventListener ( EventListener listener)
protected

Adds an event listener with item.

Note
if it is dispatching event, the added operation will be delayed to the end of current dispatch
See also
forceAddEventListener
local addEventListener ( local  listener)
protected

Adds an event listener with item.

Note
if it is dispatching event, the added operation will be delayed to the end of current dispatch
See also
forceAddEventListener
void
addEventListenerWithFixedPriority
( EventListener listener,
int  fixedPriority 
)

Adds a event listener for a specified event with the fixed priority.

Parameters
listenerThe listener of a specified event.
fixedPriorityThe fixed priority of the listener.
Note
A lower priority will be called before the ones that have a higher value. 0 priority is forbidden for fixed priority since it's used for scene graph based priority.
local
addEventListenerWithFixedPriority
( local  listener,
local  fixedPriority 
)

Adds a event listener for a specified event with the fixed priority.

Parameters
listenerThe listener of a specified event.
fixedPriorityThe fixed priority of the listener.
Note
A lower priority will be called before the ones that have a higher value. 0 priority is forbidden for fixed priority since it's used for scene graph based priority.
void
addEventListenerWithSceneGraphPriority
( EventListener listener,
Node node 
)

Adds a event listener for a specified event with the priority of scene graph.

Parameters
listenerThe listener of a specified event.
nodeThe priority of the listener is based on the draw order of this node.
Note
The priority of scene graph will be fixed value 0. So the order of listener item in the vector will be ' <0, scene graph (0 priority), >0'.
local
addEventListenerWithSceneGraphPriority
( local  listener,
local  node 
)

Adds a event listener for a specified event with the priority of scene graph.

Parameters
listenerThe listener of a specified event.
nodeThe priority of the listener is based on the draw order of this node.
Note
The priority of scene graph will be fixed value 0. So the order of listener item in the vector will be ' <0, scene graph (0 priority), >0'.
void associateNodeAndEventListener ( Node node,
EventListener listener 
)
protected

Associates node with event listener.

local associateNodeAndEventListener ( local  node,
local  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.

Parameters
eventNameThe name of the event which needs to be dispatched.
optionalUserDataThe 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.

Parameters
eventNameThe name of the event which needs to be dispatched.
optionalUserDataThe 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.

Parameters
eventThe event needs to be dispatched.
local dispatchEvent ( local  event)

Dispatches the event.

Also removes all EventListeners marked for deletion from the event dispatcher list.

Parameters
eventThe event needs to be dispatched.
void dispatchEventToListeners ( EventListenerVector listeners,
const std::function< bool(EventListener *)> &  onEvent 
)
protected

Dispatches event to listeners with a specified listener type.

local dispatchEventToListeners ( local  listeners,
local  onEvent 
)
protected

Dispatches event to listeners with a specified listener type.

void dispatchTouchEvent ( EventTouch event)
protected

Touch event needs to be processed different with other events since it needs support ALL_AT_ONCE and ONE_BY_NONE mode.

local dispatchTouchEvent ( local  event)
protected

Touch event needs to be processed different with other events since it needs support ALL_AT_ONCE and ONE_BY_NONE mode.

void dissociateNodeAndEventListener ( Node node,
EventListener listener 
)
protected

Dissociates node with event listener.

local
dissociateNodeAndEventListener
( local  node,
local  listener 
)
protected

Dissociates node with event listener.

void forceAddEventListener ( EventListener listener)
protected

Force adding an event listener.

Note
force add an event listener which will ignore whether it's in dispatching.
See also
addEventListener
local forceAddEventListener ( local  listener)
protected

Force adding an event listener.

Note
force add an event listener which will ignore whether it's in dispatching.
See also
addEventListener
EventListenerVector* getListeners ( const EventListener::ListenerID listenerID)
protected

Gets event the listener list for the event listener type.

local getListeners ( local  listenerID)
protected

Gets event the listener list for the event listener type.

bool isEnabled ( ) const

Checks whether dispatching events is enabled.

Returns
True if dispatching events is enabled.
local isEnabled ( )

Checks whether dispatching events is enabled.

Returns
True if dispatching events is enabled.
void pauseEventListenersForTarget ( Node target,
bool  recursive = false 
)

Pauses all listeners which are associated the specified target.

Parameters
targetA given target node.
recursiveTrue if pause recursively, the default value is false.
local pauseEventListenersForTarget ( local  target,
local  recursive = false 
)

Pauses all listeners which are associated the specified target.

Parameters
targetA given target node.
recursiveTrue 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.

Parameters
customEventNameA given event listener name which needs to be removed.
local removeCustomEventListeners ( local  customEventName)

Removes all custom listeners with the same event name.

Parameters
customEventNameA given event listener name which needs to be removed.
void removeEventListener ( EventListener listener)

Remove a listener.

Parameters
listenerThe specified event listener which needs to be removed.
local removeEventListener ( local  listener)

Remove a listener.

Parameters
listenerThe specified event listener which needs to be removed.
void
removeEventListenersForListenerID
( const EventListener::ListenerID listenerID)
protected

Removes all listeners with the same event listener ID.

local
removeEventListenersForListenerID
( local  listenerID)
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.

Parameters
targetA given target node.
recursiveTrue 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.

Parameters
targetA given target node.
recursiveTrue if remove recursively, the default value is false.
void removeEventListenersForType ( EventListener::Type  listenerType)

Removes all listeners with the same event listener type.

Parameters
listenerTypeA given event listener type which needs to be removed.
local removeEventListenersForType ( local  listenerType)

Removes all listeners with the same event listener type.

Parameters
listenerTypeA 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.

Parameters
targetA given target node.
recursiveTrue if resume recursively, the default value is false.
local resumeEventListenersForTarget ( local  target,
local  recursive = false 
)

Resumes all listeners which are associated the specified target.

Parameters
targetA given target node.
recursiveTrue if resume recursively, the default value is false.
void setDirty ( const EventListener::ListenerID listenerID,
DirtyFlag  flag 
)
protected

Sets the dirty flag for a specified listener ID.

local setDirty ( local  listenerID,
local  flag 
)
protected

Sets the dirty flag for a specified listener ID.

void setDirtyForNode ( Node node)
protected

Sets the dirty flag for a node.

local setDirtyForNode ( local  node)
protected

Sets the dirty flag for a node.

void setEnabled ( bool  isEnabled)

Whether to enable dispatching events.

Parameters
isEnabledTrue if enable dispatching events.
local setEnabled ( local  isEnabled)

Whether to enable dispatching events.

Parameters
isEnabledTrue if enable dispatching events.
void setPriority ( EventListener listener,
int  fixedPriority 
)

Sets listener's priority with fixed value.

Parameters
listenerA given listener.
fixedPriorityThe fixed priority value.
local setPriority ( local  listener,
local  fixedPriority 
)

Sets listener's priority with fixed value.

Parameters
listenerA given listener.
fixedPriorityThe fixed priority value.
void sortEventListeners ( const EventListener::ListenerID listenerID)
protected

Sort event listener.

local sortEventListeners ( local  listenerID)
protected

Sort event listener.

void
sortEventListenersOfFixedPriority
( const EventListener::ListenerID listenerID)
protected

Sorts the listeners of specified type by fixed priority.

local
sortEventListenersOfFixedPriority
( local  listenerID)
protected

Sorts the listeners of specified type by fixed priority.

void
sortEventListenersOfSceneGraphPriority
( const EventListener::ListenerID listenerID,
Node rootNode 
)
protected

Sorts the listeners of specified type by scene graph priority.

local
sortEventListenersOfSceneGraphPriority
( local  listenerID,
local  rootNode 
)
protected

Sorts the listeners of specified type by scene graph priority.

void updateDirtyFlagForSceneGraph ( )
protected

Update dirty flag.

local updateDirtyFlagForSceneGraph ( )
protected

Update dirty flag.

void updateListeners ( Event 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.

local updateListeners ( local  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.

void visitTarget ( Node node,
bool  isRootNode 
)
protected

Walks though scene graph to get the draw order for each node, it's called before sorting event listener with scene graph priority.

local visitTarget ( local  node,
local  isRootNode 
)
protected

Walks though scene graph to get the draw order for each node, it's called before sorting event listener with scene graph priority.

Friends And Related Function Documentation

friend class Node
friend

Member Data Documentation

std::set<Node*> _dirtyNodes
protected

The nodes were associated with scene graph based priority listeners.

local _dirtyNodes
protected

The nodes were associated with scene graph based priority listeners.

std::unordered_map<float,
std::vector<Node*>
> _globalZOrderNodeMap
protected

key: Global Z Order, value: Sorted Nodes

local _globalZOrderNodeMap
protected

key: Global Z Order, value: Sorted Nodes

int _inDispatch
protected

Whether the dispatcher is dispatching event.

local _inDispatch
protected

Whether the dispatcher is dispatching event.

std::set<std::string>
_internalCustomListenerIDs
protected
local _internalCustomListenerIDs
protected
bool _isEnabled
protected

Whether to enable dispatching event.

local _isEnabled
protected

Whether to enable dispatching event.

std::unordered_map
<EventListener::ListenerID,
EventListenerVector*>
_listenerMap
protected

Listeners map.

local _listenerMap
protected

Listeners map.

std::unordered_map<Node*,
std::vector<EventListener*>
*> _nodeListenersMap
protected

The map of node and event listeners.

local _nodeListenersMap
protected

The map of node and event listeners.

int _nodePriorityIndex
protected
local _nodePriorityIndex
protected
std::unordered_map<Node*, int>
_nodePriorityMap
protected

The map of node and its event priority.

local _nodePriorityMap
protected

The map of node and its event priority.

std::unordered_map
<EventListener::ListenerID,
DirtyFlag>
_priorityDirtyFlagMap
protected

The map of dirty flag.

local _priorityDirtyFlagMap
protected

The map of dirty flag.

std::vector<EventListener*>
_toAddedListeners
protected

The listeners to be added after dispatching event.

local _toAddedListeners
protected

The listeners to be added after dispatching event.


The documentation for this class was generated from the following file: