Josh Buhler - addEventListerner() - Now What?

46
Josh Buhler addEventListener() - Now what?

description

Working with Events in Flex and ActionScript 3.0 is something that we all do on a regular basis - but do we really know how to take advantage of everything that the Event flow in AS3 has to offer? What are the different phases of an event's life? What exactly is an Event's priority? This session will cover the life of an Event - how to create one, listen to it though various stages of it's life, and if needs be, kill it without mercy. We'll also cover creating your own custom events, and how to clean up after yourself when you're done using an Event.

Transcript of Josh Buhler - addEventListerner() - Now What?

Page 1: Josh Buhler - addEventListerner() - Now What?

Josh Buhler

addEventListener() - Now what?

Page 2: Josh Buhler - addEventListerner() - Now What?

I like long walks on the beach...

WHO AM I?

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

Page 3: Josh Buhler - addEventListerner() - Now What?

If you decide to walk out now, it’s OK. Really.

TODAY

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.

Page 4: Josh Buhler - addEventListerner() - Now What?

Trust me. There’s actually a plan.

THE AGENDA

•What an Event is

•How they work

•How to use them

•Dispatching events

•Removing event listeners

Page 5: Josh Buhler - addEventListerner() - Now What?

Really. I promise.

THE AGENDA

•Creating custom events

•Event Priority

•The Event Flow

•Event targets

•Default Behaviors

•Killing events

Page 7: Josh Buhler - addEventListerner() - Now What?

Noteworthy... yeah. I was gonna say that.

WHAT IS AN EVENT?

”A noteworthy runtime occurrence that has the potential to trigger a response

in the program.”

Page 8: Josh Buhler - addEventListerner() - Now What?

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.

Page 9: Josh Buhler - addEventListerner() - Now What?

The Freebies

BUILT-IN EVENTS

MouseEvent.CLICK

KeyboardEvent.KEY_DOWN

Stage

Loading

Uploading

Page 10: Josh Buhler - addEventListerner() - Now What?

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

CUSTOM EVENTS

XML Parsing Complete

Game Over

Application State Changes

Custom Components

Page 11: Josh Buhler - addEventListerner() - Now What?

You’re old enough, it’s time we had the talk.

EVENT BASICS

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.

Page 12: Josh Buhler - addEventListerner() - Now What?

EVENT COMPONENTS

EVENT DISPATCHERS

EVENT OBJECTS

EVENT HANDLERS

Page 13: Josh Buhler - addEventListerner() - Now What?

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.

Page 14: Josh Buhler - addEventListerner() - Now What?

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.

Page 18: Josh Buhler - addEventListerner() - Now What?

REGISTER FOR THE EVENT

addEventListener (type:String, listener:Function,

useCapture:Boolean = false,

priority:int = 0,

useWeakReference:Boolean = false);

Page 19: Josh Buhler - addEventListerner() - Now What?

REGISTER FOR THE EVENT

addEventListener (type:String, listener:Function);

Page 20: Josh Buhler - addEventListerner() - Now What?

DISPATCHING EVENTS

CREATE an instance of the Event to be dispatched

DISPATCH the Event

Page 21: Josh Buhler - addEventListerner() - Now What?

REMOVING EVENT LISTENERS

UNNECESSARY Sometimes you no longer care about that Event.

MEMORY Use less of it.

CPU Reduce the load.

Page 30: Josh Buhler - addEventListerner() - Now What?

WEAK REFERENCES

PREVENTS listeners from becoming stranded

Page 31: Josh Buhler - addEventListerner() - Now What?

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

Page 32: Josh Buhler - addEventListerner() - Now What?

Unless you still need them, of course

ALWAYS REMOVE EVENT LISTENERS

Page 33: Josh Buhler - addEventListerner() - Now What?

It’s alive!

CUSTOM EVENTS

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

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

Page 34: Josh Buhler - addEventListerner() - Now What?

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

Page 35: Josh Buhler - addEventListerner() - Now What?

EVENT METADATA

[Event(name="tempChange", type="examples.TemperatureEvent")]

Page 36: Josh Buhler - addEventListerner() - Now What?

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.

Page 38: Josh Buhler - addEventListerner() - Now What?

Stage

Sprite

TextField

Bubble Phase

Capture Phase

Target Phase

Page 44: Josh Buhler - addEventListerner() - Now What?

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.

Page 46: Josh Buhler - addEventListerner() - Now What?

Have your people call my people.

CONTACT

ghostRadiojoshbuhler

ghostRadio.netmediaRain.com

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