Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Josh Buhler - addEventListerner() - Now What?


Published on

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.

Published in: Technology, Business
  • Be the first to comment

Josh Buhler - addEventListerner() - Now What?

  1. 1. addEventListener() - Now what? Josh Buhler
  2. 2. 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, 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
  3. 3. 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.
  4. 4. 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
  5. 5. THE AGENDA Really. I promise. •Creating custom events •Event Priority •The Event Flow •Event targets •Default Behaviors •Killing events
  7. 7. 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.”
  8. 8. 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.
  9. 9. BUILT-IN EVENTS The Freebies MouseEvent.CLICK KeyboardEvent.KEY_DOWN Stage Loading Uploading
  10. 10. CUSTOM EVENTS If you build it, they will come... or something like that. XML Parsing Complete Game Over Application State Changes Custom Components
  11. 11. 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.
  13. 13. 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.
  14. 14. 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.
  15. 15. EVENT NAMES
  16. 16. EVENT TYPES
  18. 18. REGISTER FOR THE EVENT addEventListener (type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false);
  19. 19. REGISTER FOR THE EVENT addEventListener (type:String, listener:Function);
  20. 20. DISPATCHING EVENTS CREATE an instance of the Event to be dispatched DISPATCH the Event
  21. 21. REMOVING EVENT LISTENERS UNNECESSARY Sometimes you no longer care about that Event. MEMORY Use less of it. CPU Reduce the load.
  22. 22. ANONYMOUS HANDLERS Quick, easy...
  23. 23. ANONYMOUS HANDLERS ...and very, very bad.
  24. 24. WEAK REFERENCES This picture is one.
  25. 25. EventDispatcher
  26. 26. addEventListener() EventDispatcher Listener
  27. 27. addEventListener() EventDispatcher Listener
  28. 28. EventDispatcher
  30. 30. WEAK REFERENCES PREVENTS listeners from becoming stranded
  31. 31. 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
  32. 32. ALWAYS REMOVE EVENT LISTENERS Unless you still need them, of course
  33. 33. 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.
  34. 34. EXTENDING EVENT OVERRIDE clone() and toString() EXTEND When your Events need to carry additional properties, or provide other extra functionality. MORE INFO
  35. 35. EVENT METADATA [Event(name=quot;tempChangequot;, type=quot;examples.TemperatureEventquot;)]
  36. 36. 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.
  37. 37. THE EVENT FLOW
  38. 38. Stage Capture Bubble Phase Phase Sprite Target Phase TextField
  39. 39. EVENT FLOW Think of the possibilities...
  40. 40. EVENT FLOW Centralize, yo.
  41. 41. EVENT TARGETS Stay on target...
  44. 44. 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.
  45. 45. THE END Worst. Session. Ever.
  46. 46. CONTACT Have your people call my people. joshbuhler ghostRadio SAMPLE CODE