SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
addEventListener() - Now what?
                      Josh Buhler
WHO AM I?
I like long walks on the beach...


CURRENTLY Senior Developer at Rain. Building Flash, Flex, iPhone apps, and
bringing the hurt in CoD4.


PREVIOUSLY Flash Ninja at Footnote.com, Flash developer at mediaRAIN.
(Yes, same place I’m at now, just a different name. Long story.) Basically, I’ve
been writing ActionScript in some form since 2003.


CONFERENCES Adobe MAX, 360|Flex San Jose, Flash Forward
TODAY
If you decide to walk out now, it’s OK. Really.



WHAT IT IS Events 201. We’ll discuss the basics just a little bit, but then get
into more intermediate topics and practical examples.


WHAT IT’S NOT The molecular structure of Events, how to hack the byte-
code of the .SWF to mod your events, or super-bizarre edge cases.
THE AGENDA
Trust me. There’s actually a plan.


•What an Event is


•How they work


•How to use them


•Dispatching events


•Removing event listeners
THE AGENDA
Really. I promise.

•Creating custom events


•Event Priority


•The Event Flow


•Event targets


•Default Behaviors


•Killing events
WHAT IS
AN EVENT?
WHAT IS AN EVENT?
Noteworthy... yeah. I was gonna say that.




”A noteworthy runtime occurrence that
 has the potential to trigger a response
            in the program.”
TYPES OF EVENTS




BUILT-IN events are defined and dispatched by the Flash Player


CUSTOM events are defined and dispatched by the developer’s code.
BUILT-IN EVENTS
The Freebies


MouseEvent.CLICK


KeyboardEvent.KEY_DOWN


Stage


Loading


Uploading
CUSTOM EVENTS
If you build it, they will come... or something like that.



XML Parsing Complete


Game Over


Application State Changes


Custom Components
EVENT BASICS
You’re old enough, it’s time we had the talk.



SOMETHING HAPPENS This is one of those noteworthy runtime occurrences.


CREATION An instance of Event, or a subclass of it is created.


DISPATCH The created Event instance is dispatched to anything that cares.


HANDLING Something receives the event dispatch. Usually.
EVENT COMPONENTS




EVENT DISPATCHERS


EVENT OBJECTS


EVENT HANDLERS
EVENT OBJECTS




TYPE Either an instance of Event, or a subclass of it.


NAME The name of the Event. (Kinda obvious, right?)


PHASE Where in the event flow this Event is at.


TARGET What triggered this Event, and what’s handling it.
USING EVENTS



NAME of the Event


TYPE of Event


REGISTER to listen for the Event


HANDLE the Event when it happens


WAIT for the Event to occur.
EVENT NAMES
EVENT TYPES
REGISTER FOR THE EVENT
REGISTER FOR THE EVENT




     addEventListener (type:String, listener:Function,

                       useCapture:Boolean = false,

                       priority:int = 0,

                       useWeakReference:Boolean = false);
REGISTER FOR THE EVENT




     addEventListener (type:String, listener:Function);
DISPATCHING EVENTS




CREATE an instance of the Event to be dispatched


DISPATCH the Event
REMOVING EVENT LISTENERS




UNNECESSARY Sometimes you no longer care about that Event.


MEMORY Use less of it.


CPU Reduce the load.
ANONYMOUS HANDLERS
Quick, easy...
ANONYMOUS HANDLERS
...and very, very bad.
WEAK REFERENCES
This picture is one.
EventDispatcher
addEventListener()


EventDispatcher                        Listener
addEventListener()


EventDispatcher                        Listener
EventDispatcher
WEAK REFERENCES
WEAK REFERENCES




PREVENTS listeners from becoming stranded
WEAK REFERENCES




PREVENTS listeners from becoming stranded


NO GUARANTEES when they’ll be cleaned up


FORCE GARBAGE COLLECTION Unsupported, and SHOULD NOT be used in production code
                              http://bit.ly/IU0Z5
ALWAYS REMOVE EVENT LISTENERS
Unless you still need them, of course
CUSTOM EVENTS
It’s alive!




NAME-ONLY Still basic events, only their name has changed.


EXTEND When your Events need to carry additional properties, or provide
other extra functionality.
EXTENDING EVENT




OVERRIDE clone() and toString()


EXTEND When your Events need to carry additional properties, or provide
other extra functionality.




MORE INFO http://bit.ly/Fwb64
EVENT METADATA




     [Event(name=quot;tempChangequot;, type=quot;examples.TemperatureEventquot;)]
EVENT PRIORITY




EVENTS registered for the same event, with the same object fire in the order
they were registered.


UNLESS you change their priority when registering.


HIGHER priority listeners will be triggered first.
THE
EVENT
FLOW
Stage



Capture                        Bubble
 Phase                         Phase
                    Sprite


          Target
          Phase
                   TextField
EVENT FLOW
Think of the possibilities...
EVENT FLOW
Centralize, yo.
EVENT TARGETS
Stay on target...
DEFAULT
BEHAVIOR
KILLING EVENTS
KILLING EVENTS




stopPropagation() prevents the Event from continuing through the remainder of the event flow.


stopImmediatePropagation() stops the Event in it’s tracks. Do not pass Go. Do not collect $200.
THE END
Worst. Session. Ever.
CONTACT
Have your people call my people.




        mediaRain.com                              ghostRadio.net




          joshbuhler                                 ghostRadio

               SAMPLE CODE http://www.ghostradio.net/events360

Contenu connexe

Plus de 360|Conferences

Giorgio Natilli - Blaze DS Connectivity Framework
Giorgio Natilli - Blaze DS Connectivity FrameworkGiorgio Natilli - Blaze DS Connectivity Framework
Giorgio Natilli - Blaze DS Connectivity Framework
360|Conferences
 

Plus de 360|Conferences (20)

Web Os Hands On
Web Os Hands OnWeb Os Hands On
Web Os Hands On
 
Mobile Apps- Business Toolkit for the Manager
Mobile Apps- Business Toolkit for the ManagerMobile Apps- Business Toolkit for the Manager
Mobile Apps- Business Toolkit for the Manager
 
Making Real Money with Mobile Apps
Making Real Money with Mobile AppsMaking Real Money with Mobile Apps
Making Real Money with Mobile Apps
 
Unlocking Android
Unlocking AndroidUnlocking Android
Unlocking Android
 
Inside Mobile Widgets Publish
Inside Mobile Widgets PublishInside Mobile Widgets Publish
Inside Mobile Widgets Publish
 
You Know WebOS
You Know WebOSYou Know WebOS
You Know WebOS
 
Ignite Denver 4 Master Deck
Ignite Denver 4 Master DeckIgnite Denver 4 Master Deck
Ignite Denver 4 Master Deck
 
Oğuz Demirkapı - Hands On Training: Creating Our First i18N Flex Application ...
Oğuz	Demirkapı - Hands On Training: Creating Our First i18N Flex Application ...Oğuz	Demirkapı - Hands On Training: Creating Our First i18N Flex Application ...
Oğuz Demirkapı - Hands On Training: Creating Our First i18N Flex Application ...
 
Tyler Wright - Undo History with Flight
Tyler Wright - Undo History with FlightTyler Wright - Undo History with Flight
Tyler Wright - Undo History with Flight
 
Mansour Raad & Anthony Jayaprakash - Yet Another Mapping Framework, NOT!
Mansour Raad & Anthony Jayaprakash - Yet Another Mapping Framework, NOT!Mansour Raad & Anthony Jayaprakash - Yet Another Mapping Framework, NOT!
Mansour Raad & Anthony Jayaprakash - Yet Another Mapping Framework, NOT!
 
Erik Loehfelm - Experience Design with Flash Catalyst and Flex Gumbo
Erik Loehfelm - Experience Design with Flash Catalyst and Flex GumboErik Loehfelm - Experience Design with Flash Catalyst and Flex Gumbo
Erik Loehfelm - Experience Design with Flash Catalyst and Flex Gumbo
 
Ryan Phelan - Bending and Flexing
Ryan Phelan - Bending and FlexingRyan Phelan - Bending and Flexing
Ryan Phelan - Bending and Flexing
 
Giorgio Natilli - Blaze DS Connectivity Framework
Giorgio Natilli - Blaze DS Connectivity FrameworkGiorgio Natilli - Blaze DS Connectivity Framework
Giorgio Natilli - Blaze DS Connectivity Framework
 
Samuel Asher Rivello - PureMVC Hands On Part 1
Samuel Asher Rivello - PureMVC Hands On Part 1Samuel Asher Rivello - PureMVC Hands On Part 1
Samuel Asher Rivello - PureMVC Hands On Part 1
 
Adrian Pomilio - Flex Ajax Bridge and Legacy Applications
Adrian Pomilio - Flex Ajax Bridge and Legacy ApplicationsAdrian Pomilio - Flex Ajax Bridge and Legacy Applications
Adrian Pomilio - Flex Ajax Bridge and Legacy Applications
 
Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2Samuel Asher Rivello - PureMVC Hands On Part 2
Samuel Asher Rivello - PureMVC Hands On Part 2
 
Ryan Fishberg and Joan Lafferty - ItemsRenderers
Ryan Fishberg and Joan Lafferty - ItemsRenderersRyan Fishberg and Joan Lafferty - ItemsRenderers
Ryan Fishberg and Joan Lafferty - ItemsRenderers
 
Ryan Campbell - OpenFlux and Flex 4
Ryan Campbell - OpenFlux and Flex 4Ryan Campbell - OpenFlux and Flex 4
Ryan Campbell - OpenFlux and Flex 4
 
Ben Elmore - Do You Speak Flex
Ben Elmore - Do You Speak FlexBen Elmore - Do You Speak Flex
Ben Elmore - Do You Speak Flex
 
Francisco Inchauste - RIA Mojo - Making your Flex application standout with a...
Francisco Inchauste - RIA Mojo - Making your Flex application standout with a...Francisco Inchauste - RIA Mojo - Making your Flex application standout with a...
Francisco Inchauste - RIA Mojo - Making your Flex application standout with a...
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

Josh Buhler - addEventListerner() - Now What?