Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Clone this wiki locally
Signals have many features not available from Flash’s EventDispatcher.
- Remove all event listeners:
- Retrieve the number of listeners:
trace( signal.numListeners );
- Listeners can be added for a one-time call and removed automatically on dispatch:
signal.addOnce(theListener); // result: signal has one listener signal.dispatch(theEvent); // result: theListener is called, signal now has no listeners
- Any object type can be dispatched to listeners; no flash.events.Event restriction.
- You can dispatch your value objects themselves and avoid creating so many Event subclasses.
- Any number of arguments can be dispatched to listeners, from zero to many.
- A Signal can be initialized with value classes that will validate value objects on dispatch (optional):
// A Signal that will dispatch a String and an integer: progress = new Signal(String, int); //later: progress.dispatch(); // will throw ArgumentError progress.dispatch('The Answer'); // will throw ArgumentError progress.dispatch('The Answer', 42.5); // will throw ArgumentError progress.dispatch('The Answer', 42); // will succeed
- If the Signal has any value classes specified, each listener is checked on `add()` to ensure it declares enough arguments for the value objects.
- Signals can be placed in interfaces to indicate the events dispatched by a class.
- Events can bubble recursively through `.parent` independent of the display list (experimental).