Difference between revisions of "EventDispatcher"

From GiderosMobile
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
<languages />
 
 
<!-- GIDEROSOBJ:EventDispatcher -->
 
<!-- GIDEROSOBJ:EventDispatcher -->
'''<translate>Supported platforms</translate>:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]][[File:Platform html5.png]][[File:Platform winrt.png]][[File:Platform win32.png]]<br/>
+
'''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]][[File:Platform html5.png]][[File:Platform winrt.png]][[File:Platform win32.png]]<br/>
'''<translate>Available since</translate>:''' Gideros 2011.6<br/>
+
'''Available since:''' Gideros 2011.6<br/>
'''<translate>Inherits from</translate>:''' [[Special:MyLanguage/Object|Object]]<br/>
+
'''Inherits from:''' [[Object]]<br/>
  
=== <translate>Description</translate> ===
+
=== Description ===
All classes that dispatch events inherit from [[Special:MyLanguage/EventDispatcher|EventDispatcher]]. The target of an event is a listener function and an optional data value.
+
All classes that dispatch events inherit from '''EventDispatcher'''. The target of an event is a Listener function and an optional data value.
  
When an event is dispatched, the registered function is called.
+
When an event is dispatched, the registered function is called. If the optional data value is given, it is used as a first parameter while calling the listener function.
  
If the optional data value is given, it is used as a first parameter while calling the listener function.
+
Event dispatching and event targets are the core part of the Gideros Event model. Different event types (such as [[Event.ENTER_FRAME]], [[Event.TOUCHES_BEGIN]] or [[Event.MOUSE_DOWN]]) flow through the scene tree hierarchy differently. When a touch or mouse event occurs, Gideros dispatches an event object into the event flow from the root of the scene tree.
  
Event dispatching and event targets are the core part of the Gideros event model. Different event types (such as [[Special:MyLanguage/Event.ENTER_FRAME|Event.ENTER_FRAME]], [[Special:MyLanguage/Event.TOUCHES_BEGIN|Event.TOUCHES_BEGIN]] or [[Special:MyLanguage/Event.MOUSE_DOWN|Event.MOUSE_DOWN]]) flow through the scene tree hierarchy differently. When a touch or mouse event occurs, Gideros dispatches an event object into the event flow from the root of the scene tree.
+
On the other hand, [[Event.ENTER_FRAME]] event is dispatched to all '''Sprite''' objects.
  
On the other hand, [[Special:MyLanguage/Event.ENTER_FRAME|Event.ENTER_FRAME]] event is dispatched to all [[Special:MyLanguage/Sprite|Sprite]] objects.
+
If you want to define a class that dispatches events, you can inherit your class from EventDispatcher.
  
If you want to define a class that dispatches events, you can inherit your class from [[Special:MyLanguage/EventDispatcher|EventDispatcher]].
+
=== Examples ===
 +
'''User created event'''
 +
<syntaxhighlight lang="lua">
 +
local event = Event.new("myevent")
 +
event.data1 = "12345"
 +
event.data2 = "abcde"
 +
mydispatcher:dispatchEvent(event)
 +
</syntaxhighlight>
  
=== <translate>Examples</translate> ===
+
'''Game loop'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
-- example 1
+
Ball = Core.class(Sprite)
 +
 
 +
function Ball:onEnterFrame()
 +
self:setX(self:getX() + 1)
 +
end
 +
 
 +
ball = Ball.new()
 +
ball:addEventListener(Event.ENTER_FRAME, ball.onEnterFrame, ball)
 +
</syntaxhighlight>
 +
 
 +
'''EventDispatcher inheritance'''
 +
<syntaxhighlight lang="lua">
 
ClassA = Core.class(EventDispatcher)
 
ClassA = Core.class(EventDispatcher)
 
ClassB = Core.class(EventDispatcher)
 
ClassB = Core.class(EventDispatcher)
  
 
function ClassA:funcA(event)
 
function ClassA:funcA(event)
  print("funcA", self, event:getType(), event:getTarget())
+
print("funcA", self, event:getType(), event:getTarget())
 
end
 
end
  
Line 32: Line 49:
 
local b = ClassB.new()
 
local b = ClassB.new()
  
b:addEventListener("myevent", a.funcA, a) -- when b dispatches an "myevent" event,
+
b:addEventListener("myevent", a.funcA, a)
-- a.funcA will be called with 'a'
+
-- when b dispatches an "myevent" event, a.funcA will be called with 'a' as first parameter
-- as first parameter
 
 
 
b:dispatchEvent(Event.new("myevent")) -- will print "funcA"
 
  
 
+
b:dispatchEvent(Event.new("myevent")) -- will print "funcA"
-- example 2
+
</syntaxhighlight>
Ball = Core.class(Sprite)
 
 
 
function Ball:onEnterFrame()
 
  self:setX(self:getX() + 1)
 
end
 
 
 
ball = Ball.new()
 
ball:addEventListener(Event.ENTER_FRAME, ball.onEnterFrame, ball)</source>
 
  
 
{|-
 
{|-
 
| style="width: 50%; vertical-align:top;"|
 
| style="width: 50%; vertical-align:top;"|
=== <translate>Methods</translate> ===
+
=== Methods ===
[[Special:MyLanguage/EventDispatcher.new|EventDispatcher.new]] ''<translate>creates a new EventDispatcher object</translate>''<br/><!-- GIDEROSMTD:EventDispatcher.new() creates a new EventDispatcher object -->
+
[[EventDispatcher.new]] ''creates a new EventDispatcher object''<br/><!--GIDEROSMTD:EventDispatcher.new() creates a new EventDispatcher object-->
[[Special:MyLanguage/EventDispatcher:addEventListener|EventDispatcher:addEventListener]] ''<translate>registers a listener function</translate>''<br/><!-- GIDEROSMTD:EventDispatcher:addEventListener(type,listener,data) registers a listener function -->
+
 
[[Special:MyLanguage/EventDispatcher:dispatchEvent|EventDispatcher:dispatchEvent]] ''<translate>dispatches an event</translate>''<br/><!-- GIDEROSMTD:EventDispatcher:dispatchEvent(event) dispatches an event -->
+
[[EventDispatcher:addEventListener]] ''registers a listener function''<br/><!--GIDEROSMTD:EventDispatcher:addEventListener(type,listener,data) registers a listener function-->
[[Special:MyLanguage/EventDispatcher:hasEventListener|EventDispatcher:hasEventListener]] ''<translate>checks if the EventDispatcher object has a event listener</translate>''<br/><!-- GIDEROSMTD:EventDispatcher:hasEventListener(type) checks if the EventDispatcher object has a event listener -->
+
[[EventDispatcher:dispatchEvent]] ''dispatches an event''<br/><!--GIDEROSMTD:EventDispatcher:dispatchEvent(event) dispatches an event-->
[[Special:MyLanguage/EventDispatcher:removeAllListeners|EventDispatcher:removeAllListeners]] ''<translate>remove all listeners</translate>''<br/><!-- GIDEROSMTD:EventDispatcher:removeAllListeners() remove all listeners -->
+
[[EventDispatcher:hasEventListener]] ''checks if the EventDispatcher object has a event listener''<br/><!--GIDEROSMTD:EventDispatcher:hasEventListener(type) checks if the EventDispatcher object has a event listener-->
[[Special:MyLanguage/EventDispatcher:removeEventListener|EventDispatcher:removeEventListener]] ''<translate>removes a listener function</translate>''<br/><!-- GIDEROSMTD:EventDispatcher:removeEventListener(type,listener,data) removes a listener function -->
+
[[EventDispatcher:removeAllListeners]] ''remove all listeners''<br/><!--GIDEROSMTD:EventDispatcher:removeAllListeners() remove all listeners-->
 +
[[EventDispatcher:removeEventListener]] ''removes a listener function''<br/><!--GIDEROSMTD:EventDispatcher:removeEventListener(type,listener,data) removes a listener function-->
  
 
| style="width: 50%; vertical-align:top;"|
 
| style="width: 50%; vertical-align:top;"|
=== <translate>Events</translate> ===
+
=== Events ===
[[Special:MyLanguage/Event.APPLICATION_BACKGROUND|Event.APPLICATION_BACKGROUND]]<br/><!-- GIDEROSEVT:Event.APPLICATION_BACKGROUND applicationBackground-->
+
[[Event.APPLICATION_BACKGROUND]]<br/><!--GIDEROSEVT:Event.APPLICATION_BACKGROUND applicationBackground-->
[[Special:MyLanguage/Event.APPLICATION_EXIT|Event.APPLICATION_EXIT]]<br/><!-- GIDEROSEVT:Event.APPLICATION_EXIT applicationExit-->
+
[[Event.APPLICATION_EXIT]]<br/><!--GIDEROSEVT:Event.APPLICATION_EXIT applicationExit-->
[[Special:MyLanguage/Event.APPLICATION_FOREGROUND|Event.APPLICATION_FOREGROUND]]<br/><!-- GIDEROSEVT:Event.APPLICATION_FOREGROUND applicationForeground-->
+
[[Event.APPLICATION_FOREGROUND]]<br/><!--GIDEROSEVT:Event.APPLICATION_FOREGROUND applicationForeground-->
[[Special:MyLanguage/Event.APPLICATION_RESIZE|Event.APPLICATION_RESIZE]]<br/><!-- GIDEROSEVT:Event.APPLICATION_RESIZE applicationResize-->
+
[[Event.APPLICATION_RESIZE]]<br/><!--GIDEROSEVT:Event.APPLICATION_RESIZE applicationResize-->
[[Special:MyLanguage/Event.APPLICATION_RESUME|Event.APPLICATION_RESUME]]<br/><!-- GIDEROSEVT:Event.APPLICATION_RESUME applicationResume-->
+
[[Event.APPLICATION_RESUME]]<br/><!--GIDEROSEVT:Event.APPLICATION_RESUME applicationResume-->
[[Special:MyLanguage/Event.APPLICATION_START|Event.APPLICATION_START]]<br/><!-- GIDEROSEVT:Event.APPLICATION_START applicationStart-->
+
[[Event.APPLICATION_START]]<br/><!--GIDEROSEVT:Event.APPLICATION_START applicationStart-->
[[Special:MyLanguage/Event.APPLICATION_SUSPEND|Event.APPLICATION_SUSPEND]]<br/><!-- GIDEROSEVT:Event.APPLICATION_SUSPEND applicationSuspend-->
+
[[Event.APPLICATION_SUSPEND]]<br/><!--GIDEROSEVT:Event.APPLICATION_SUSPEND applicationSuspend-->
[[Special:MyLanguage/Event.MEMORY_WARNING|Event.MEMORY_WARNING]]<br/><!-- GIDEROSEVT:Event.MEMORY_WARNING memoryWarning-->
+
[[Event.MEMORY_WARNING]]<br/><!--GIDEROSEVT:Event.MEMORY_WARNING memoryWarning-->
[[Special:MyLanguage/Event.OPEN_URL|Event.OPEN_URL]]<br/><!-- GIDEROSEVT:Event.OPEN_URL openUrl-->
+
[[Event.OPEN_URL]]<br/><!--GIDEROSEVT:Event.OPEN_URL openUrl-->
=== <translate>Constants</translate> ===
+
=== Constants ===
 
|}
 
|}
 +
 +
{{GIDEROS IMPORTANT LINKS}}

Latest revision as of 01:26, 18 November 2023

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.pngPlatform html5.pngPlatform winrt.pngPlatform win32.png
Available since: Gideros 2011.6
Inherits from: Object

Description

All classes that dispatch events inherit from EventDispatcher. The target of an event is a Listener function and an optional data value.

When an event is dispatched, the registered function is called. If the optional data value is given, it is used as a first parameter while calling the listener function.

Event dispatching and event targets are the core part of the Gideros Event model. Different event types (such as Event.ENTER_FRAME, Event.TOUCHES_BEGIN or Event.MOUSE_DOWN) flow through the scene tree hierarchy differently. When a touch or mouse event occurs, Gideros dispatches an event object into the event flow from the root of the scene tree.

On the other hand, Event.ENTER_FRAME event is dispatched to all Sprite objects.

If you want to define a class that dispatches events, you can inherit your class from EventDispatcher.

Examples

User created event

local event = Event.new("myevent")
event.data1 = "12345"
event.data2 = "abcde"
mydispatcher:dispatchEvent(event)

Game loop

Ball = Core.class(Sprite)

function Ball:onEnterFrame()
	self:setX(self:getX() + 1)
end

ball = Ball.new()
ball:addEventListener(Event.ENTER_FRAME, ball.onEnterFrame, ball)

EventDispatcher inheritance

ClassA = Core.class(EventDispatcher)
ClassB = Core.class(EventDispatcher)

function ClassA:funcA(event)
	print("funcA", self, event:getType(), event:getTarget())
end

local a = ClassA.new()
local b = ClassB.new()

b:addEventListener("myevent", a.funcA, a)
-- when b dispatches an "myevent" event, a.funcA will be called with 'a' as first parameter

b:dispatchEvent(Event.new("myevent")) -- will print "funcA"

Methods

EventDispatcher.new creates a new EventDispatcher object

EventDispatcher:addEventListener registers a listener function
EventDispatcher:dispatchEvent dispatches an event
EventDispatcher:hasEventListener checks if the EventDispatcher object has a event listener
EventDispatcher:removeAllListeners remove all listeners
EventDispatcher:removeEventListener removes a listener function

Events

Event.APPLICATION_BACKGROUND
Event.APPLICATION_EXIT
Event.APPLICATION_FOREGROUND
Event.APPLICATION_RESIZE
Event.APPLICATION_RESUME
Event.APPLICATION_START
Event.APPLICATION_SUSPEND
Event.MEMORY_WARNING
Event.OPEN_URL

Constants