http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/791c65b1/externs/createjs/src/main/patch/easeljs.patch
----------------------------------------------------------------------
diff --git a/externs/createjs/src/main/patch/easeljs.patch 
b/externs/createjs/src/main/patch/easeljs.patch
index ead96c9..41a5230 100644
--- a/externs/createjs/src/main/patch/easeljs.patch
+++ b/externs/createjs/src/main/patch/easeljs.patch
@@ -1,8 +1,8 @@
 diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/Event.js 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/Event.js
-index 3ce0025..71f4e9f 100644
+index 3ce0025..dbefcd2 100644
 --- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/Event.js
 +++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/Event.js
-@@ -1,262 +1,76 @@
+@@ -1,262 +1,80 @@
 -/*
 -* Event
 -* Visit http://createjs.com/ for documentation, updates and examples.
@@ -49,14 +49,17 @@ index 3ce0025..71f4e9f 100644
 - *
 - * @module CreateJS
 - * @main CreateJS
-- */
--
--// namespace:
--this.createjs = this.createjs||{};
 + * @see [Event]
-+ * @constructor  */
++ * @param {(string|null)} type The event type.
++ * @param {(boolean|null)} bubbles Indicates whether the event will bubble 
through the display list.
++ * @param {(boolean|null)} cancelable Indicates whether the default behaviour 
of this event can be cancelled.
++ * @constructor
+  */
 +createjs.Event = function (type, bubbles, cancelable) {}
  
+-// namespace:
+-this.createjs = this.createjs||{};
+-
 -(function() {
 -      "use strict";
 +    /**
@@ -332,10 +335,10 @@ index 3ce0025..71f4e9f 100644
 -      createjs.Event = Event;
 -}());
 diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js
 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js
-index b95257c..a9b2210 100644
+index 0ae4781..ca46b46 100644
 --- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js
 +++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js
-@@ -1,407 +1,201 @@
+@@ -1,407 +1,202 @@
 -/*
 -* EventDispatcher
 -* Visit http://createjs.com/ for documentation, updates and examples.
@@ -366,207 +369,8 @@ index b95257c..a9b2210 100644
 -
 -/**
 - * @module CreateJS
-+/** @fileoverview Auto-generated Externs files
-+ * @externs
-  */
-+/**
-+ * EventDispatcher provides methods for managing queues of event listeners 
and dispatching events.
-+ * 
-+ * You can either extend EventDispatcher or mix its methods into an existing 
prototype or instance by using the
-+ * EventDispatcher {{#crossLink "EventDispatcher/initialize"}}{{/crossLink}} 
method.
-+ * 
-+ * Together with the CreateJS Event class, EventDispatcher provides an 
extended event model that is based on the
-+ * DOM Level 2 event model, including addEventListener, removeEventListener, 
and dispatchEvent. It supports
-+ * bubbling / capture, preventDefault, stopPropagation, 
stopImmediatePropagation, and handleEvent.
-+ * 
-+ * EventDispatcher also exposes a {{#crossLink 
"EventDispatcher/on"}}{{/crossLink}} method, which makes it easier
-+ * to create scoped listeners, listeners that only run once, and listeners 
with associated arbitrary data. The
-+ * {{#crossLink "EventDispatcher/off"}}{{/crossLink}} method is merely an 
alias to
-+ * {{#crossLink "EventDispatcher/removeEventListener"}}{{/crossLink}}.
-+ * 
-+ * Another addition to the DOM Level 2 model is the {{#crossLink 
"EventDispatcher/removeAllEventListeners"}}{{/crossLink}}
-+ * method, which can be used to listeners for all events, or listeners for a 
specific event. The Event object also
-+ * includes a {{#crossLink "Event/remove"}}{{/crossLink}} method which 
removes the active listener.
-+ * 
-+ * <h4>Example</h4>
-+ * Add EventDispatcher capabilities to the "MyClass" class.
-+ * 
-+ * createjs.EventDispatcher.initialize(MyClass.prototype);
-+ * 
-+ * Add an event (see {{#crossLink 
"EventDispatcher/addEventListener"}}{{/crossLink}}).
-+ * 
-+ * instance.addEventListener("eventName", handlerMethod);
-+ * function handlerMethod(event) {
-+ * console.log(event.target + " Was Clicked");
-+ * }
-+ * 
-+ * <b>Maintaining proper scope</b><br />
-+ * Scope (ie. "this") can be be a challenge with events. Using the 
{{#crossLink "EventDispatcher/on"}}{{/crossLink}}
-+ * method to subscribe to events simplifies this.
-+ * 
-+ * instance.addEventListener("click", function(event) {
-+ * console.log(instance == this); // false, scope is ambiguous.
-+ * });
-+ * 
-+ * instance.on("click", function(event) {
-+ * console.log(instance == this); // true, "on" uses dispatcher scope by 
default.
-+ * });
-+ * 
-+ * If you want to use addEventListener instead, you may want to use 
function.bind() or a similar proxy to manage scope.
-+ *
-+ * @see [EventDispatcher]
-+ * @constructor  */
-+createjs.EventDispatcher = function () {}
-+
-+    /**
-+     * Static initializer to mix EventDispatcher methods into a target object 
or prototype.
-+     * 
-+     * createjs.EventDispatcher.initialize(MyClass.prototype); // add to the 
prototype of the class
-+     * createjs.EventDispatcher.initialize(myObject); // add to a specific 
instance
-+     *
-+     * @param {(Object|null)} target The target object to inject 
EventDispatcher methods into. This can be an instance or a prototype.
-+     * @see [EventDispatcher]
-+     */
-+createjs.EventDispatcher.initialize = function (target) {  }
-+
-+    /**
-+     * Indicates whether there is at least one listener for the specified 
event type on this object or any of its
-+     * ancestors (parent, parent's parent, etc). A return value of true 
indicates that if a bubbling event of the
-+     * specified type is dispatched from this object, it will trigger at 
least one listener.
-+     * 
-+     * This is similar to {{#crossLink 
"EventDispatcher/hasEventListener"}}{{/crossLink}}, but it searches the entire
-+     * event flow for a listener, not just this object.
-+     *
-+     * @param {(string|null)} type The string type of the event.
-+     * @see [EventDispatcher]
-+     * @returns {(boolean|null)} Returns `true` if there is at least one 
listener for the specified event.
-+     */
-+createjs.EventDispatcher.prototype.willTrigger = function (type) {  return 
null; }
-+
-+    /**
-+     * Removes all listeners for the specified type, or all listeners of all 
types.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * // Remove all listeners
-+     * displayObject.removeAllEventListeners();
-+     * 
-+     * // Remove all click listeners
-+     * displayObject.removeAllEventListeners("click");
-+     *
-+     * @param {(string|null|undefined)} type The string type of the event. If 
omitted, all listeners for all types will be removed.
-+     * @see [EventDispatcher]
-+     */
-+createjs.EventDispatcher.prototype.removeAllEventListeners = function (type) 
{  }
-+
-+    /**
-+     * Adds the specified event listener. Note that adding multiple listeners 
to the same function will result in
-+     * multiple callbacks getting fired.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * displayObject.addEventListener("click", handleClick);
-+     * function handleClick(event) {
-+     * // Click happened.
-+     * }
-+     *
-+     * @param {(string|null)} type The string type of the event.
-+     * @param {(Object|null)} listener An object with a handleEvent method, 
or a function that will be called when the event is dispatched.
-+     * @param {(boolean|null|undefined)} useCapture For events that bubble, 
indicates whether to listen for the event in the capture or bubbling/target 
phase.
-+     * @see [EventDispatcher]
-+     * @returns {(Object|null)} Returns the listener for chaining or 
assignment.
-+     */
-+createjs.EventDispatcher.prototype.addEventListener = function (type, 
listener, useCapture) {  return null; }
-+
-+    /**
-+     * @param {(Event|Object|null)} eventObj 
-+     * @param {(Object|null)} eventPhase 
-+     * @see [EventDispatcher]
-+     */
-+createjs.EventDispatcher.prototype._dispatchEvent = function (eventObj, 
eventPhase) {  }
-+
-+    /**
-+     * Dispatches the specified event to all listeners.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * // Use a string event
-+     * this.dispatchEvent("complete");
-+     * 
-+     * // Use an Event instance
-+     * var event = new createjs.Event("progress");
-+     * this.dispatchEvent(event);
-+     *
-+     * @param {(Event|Object|null)} eventObj An object with a "type" 
property, or a string type. While a generic object will work, it is recommended 
to use a CreateJS Event instance. If a string is used, dispatchEvent will 
construct an Event instance with the specified type.
-+     * @see [EventDispatcher]
-+     * @returns {(boolean|null)} Returns the value of 
eventObj.defaultPrevented.
-+     */
-+createjs.EventDispatcher.prototype.dispatchEvent = function (eventObj) {  
return null; }
-+
-+    /**
-+     * Removes the specified event listener.
-+     * 
-+     * <b>Important Note:</b> that you must pass the exact function reference 
used when the event was added. If a proxy
-+     * function, or function closure is used as the callback, the 
proxy/closure reference must be used - a new proxy or
-+     * closure will not work.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * displayObject.removeEventListener("click", handleClick);
-+     *
-+     * @param {(string|null)} type The string type of the event.
-+     * @param {(Object|null)} listener The listener function or object.
-+     * @param {(boolean|null|undefined)} useCapture For events that bubble, 
indicates whether to listen for the event in the capture or bubbling/target 
phase.
-+     * @see [EventDispatcher]
-+     */
-+createjs.EventDispatcher.prototype.removeEventListener = function (type, 
listener, useCapture) {  }
-+
-+    /**
-+     * A shortcut method for using addEventListener that makes it easier to 
specify an execution scope, have a listener
-+     * only run once, associate arbitrary data with the listener, and remove 
the listener.
-+     * 
-+     * This method works by creating an anonymous wrapper function and 
subscribing it with addEventListener.
-+     * The created anonymous function is returned for use with 
.removeEventListener (or .off).
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * var listener = myBtn.on("click", handleClick, null, false, {count:3});
-+     * function handleClick(evt, data) {
-+     * data.count -= 1;
-+     * console.log(this == myBtn); // true - scope defaults to the dispatcher
-+     * if (data.count == 0) {
-+     * alert("clicked 3 times!");
-+     * myBtn.off("click", listener);
-+     * // alternately: evt.remove();
-+     * }
-+     * }
-+     *
-+     * @param {(string|null)} type The string type of the event.
-+     * @param {(Object|null)} listener An object with a handleEvent method, 
or a function that will be called when the event is dispatched.
-+     * @param {(Object|null|undefined)} scope The scope to execute the 
listener in. Defaults to the dispatcher/currentTarget for function listeners, 
and to the listener itself for object listeners (ie. using handleEvent).
-+     * @param {(boolean|null|undefined)} once If true, the listener will 
remove itself after the first time it is triggered.
-+     * @param {*} data Arbitrary data that will be included as the second 
parameter when the listener is called.
-+     * @param {(boolean|null|undefined)} useCapture For events that bubble, 
indicates whether to listen for the event in the capture or bubbling/target 
phase.
-+     * @see [EventDispatcher]
-+     * @returns {(Function|null)} Returns the anonymous function that was 
created and assigned as the listener. This is needed to remove the listener 
later using .removeEventListener.
-+     */
-+createjs.EventDispatcher.prototype.on = function (type, listener, scope, 
once, data, useCapture) {  return null; }
-+
-+    /**
-+     * @see [EventDispatcher]
-+     * @returns {(string|null)} a string representation of the instance.
-+     */
-+createjs.EventDispatcher.prototype.toString = function () {  return null; }
-+
-+    /**
-+     * Indicates whether there is at least one listener for the specified 
event type.
-+     *
-+     * @param {(string|null)} type The string type of the event.
-+     * @see [EventDispatcher]
-+     * @returns {(boolean|null)} Returns true if there is at least one 
listener for the specified event.
-+     */
-+createjs.EventDispatcher.prototype.hasEventListener = function (type) {  
return null; }
- 
+- */
+-
 -// namespace:
 -this.createjs = this.createjs||{};
 -
@@ -942,51 +746,252 @@ index b95257c..a9b2210 100644
 -
 -      createjs.EventDispatcher = EventDispatcher;
 -}());
-diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js
-index 3c5c4a6..3f97740 100644
---- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js
-+++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js
-@@ -1,632 +1,182 @@
--/*
--* Ticker
--* Visit http://createjs.com/ for documentation, updates and examples.
--*
--* Copyright (c) 2010 gskinner.com, inc.
--*
--* Permission is hereby granted, free of charge, to any person
--* obtaining a copy of this software and associated documentation
--* files (the "Software"), to deal in the Software without
--* restriction, including without limitation the rights to use,
--* copy, modify, merge, publish, distribute, sublicense, and/or sell
--* copies of the Software, and to permit persons to whom the
--* Software is furnished to do so, subject to the following
--* conditions:
--*
--* The above copyright notice and this permission notice shall be
--* included in all copies or substantial portions of the Software.
--*
--* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
--* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
--* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
--* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
--* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
--* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
--* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
--* OTHER DEALINGS IN THE SOFTWARE.
--*/
--
--/**
-- * @module CreateJS
 +/** @fileoverview Auto-generated Externs files
 + * @externs
-  */
++ */
 +/**
-+ * The Ticker provides a centralized tick or heartbeat broadcast at a set 
interval. Listeners can subscribe to the tick
-+ * event to be notified when a set time interval has elapsed.
++ * EventDispatcher provides methods for managing queues of event listeners 
and dispatching events.
 + * 
-+ * Note that the interval that the tick event is called is a target interval, 
and may be broadcast at a slower interval
-+ * when under high CPU load. The Ticker class uses a static interface (ex. 
`createjs.Ticker.framerate = 30;`) and
-+ * can not be instantiated.
++ * You can either extend EventDispatcher or mix its methods into an existing 
prototype or instance by using the
++ * EventDispatcher {{#crossLink "EventDispatcher/initialize"}}{{/crossLink}} 
method.
++ * 
++ * Together with the CreateJS Event class, EventDispatcher provides an 
extended event model that is based on the
++ * DOM Level 2 event model, including addEventListener, removeEventListener, 
and dispatchEvent. It supports
++ * bubbling / capture, preventDefault, stopPropagation, 
stopImmediatePropagation, and handleEvent.
++ * 
++ * EventDispatcher also exposes a {{#crossLink 
"EventDispatcher/on"}}{{/crossLink}} method, which makes it easier
++ * to create scoped listeners, listeners that only run once, and listeners 
with associated arbitrary data. The
++ * {{#crossLink "EventDispatcher/off"}}{{/crossLink}} method is merely an 
alias to
++ * {{#crossLink "EventDispatcher/removeEventListener"}}{{/crossLink}}.
++ * 
++ * Another addition to the DOM Level 2 model is the {{#crossLink 
"EventDispatcher/removeAllEventListeners"}}{{/crossLink}}
++ * method, which can be used to listeners for all events, or listeners for a 
specific event. The Event object also
++ * includes a {{#crossLink "Event/remove"}}{{/crossLink}} method which 
removes the active listener.
++ * 
++ * <h4>Example</h4>
++ * Add EventDispatcher capabilities to the "MyClass" class.
++ * 
++ * createjs.EventDispatcher.initialize(MyClass.prototype);
++ * 
++ * Add an event (see {{#crossLink 
"EventDispatcher/addEventListener"}}{{/crossLink}}).
++ * 
++ * instance.addEventListener("eventName", handlerMethod);
++ * function handlerMethod(event) {
++ * console.log(event.target + " Was Clicked");
++ * }
++ * 
++ * <b>Maintaining proper scope</b><br />
++ * Scope (ie. "this") can be be a challenge with events. Using the 
{{#crossLink "EventDispatcher/on"}}{{/crossLink}}
++ * method to subscribe to events simplifies this.
++ * 
++ * instance.addEventListener("click", function(event) {
++ * console.log(instance == this); // false, scope is ambiguous.
++ * });
++ * 
++ * instance.on("click", function(event) {
++ * console.log(instance == this); // true, "on" uses dispatcher scope by 
default.
++ * });
++ * 
++ * If you want to use addEventListener instead, you may want to use 
function.bind() or a similar proxy to manage scope.
++ *
++ * @see [EventDispatcher]
++ * @constructor
++ */
++createjs.EventDispatcher = function () {}
++
++    /**
++     * Static initializer to mix EventDispatcher methods into a target object 
or prototype.
++     * 
++     * createjs.EventDispatcher.initialize(MyClass.prototype); // add to the 
prototype of the class
++     * createjs.EventDispatcher.initialize(myObject); // add to a specific 
instance
++     *
++     * @param {(Object|null)} target The target object to inject 
EventDispatcher methods into. This can be an instance or a prototype.
++     * @see [EventDispatcher]
++     */
++createjs.EventDispatcher.initialize = function (target) {  }
++
++    /**
++     * Indicates whether there is at least one listener for the specified 
event type on this object or any of its
++     * ancestors (parent, parent's parent, etc). A return value of true 
indicates that if a bubbling event of the
++     * specified type is dispatched from this object, it will trigger at 
least one listener.
++     * 
++     * This is similar to {{#crossLink 
"EventDispatcher/hasEventListener"}}{{/crossLink}}, but it searches the entire
++     * event flow for a listener, not just this object.
++     *
++     * @param {(string|null)} type The string type of the event.
++     * @see [EventDispatcher]
++     * @returns {(boolean|null)} Returns `true` if there is at least one 
listener for the specified event.
++     */
++createjs.EventDispatcher.prototype.willTrigger = function (type) {  return 
null; }
++
++    /**
++     * Removes all listeners for the specified type, or all listeners of all 
types.
++     * 
++     * <h4>Example</h4>
++     * 
++     * // Remove all listeners
++     * displayObject.removeAllEventListeners();
++     * 
++     * // Remove all click listeners
++     * displayObject.removeAllEventListeners("click");
++     *
++     * @param {string=} opt_type The string type of the event. If omitted, 
all listeners for all types will be removed.
++     * @see [EventDispatcher]
++     */
++createjs.EventDispatcher.prototype.removeAllEventListeners = function 
(opt_type) {  }
++
++    /**
++     * Adds the specified event listener. Note that adding multiple listeners 
to the same function will result in
++     * multiple callbacks getting fired.
++     * 
++     * <h4>Example</h4>
++     * 
++     * displayObject.addEventListener("click", handleClick);
++     * function handleClick(event) {
++     * // Click happened.
++     * }
++     *
++     * @param {(string|null)} type The string type of the event.
++     * @param {(Object|null)} listener An object with a handleEvent method, 
or a function that will be called when the event is dispatched.
++     * @param {boolean=} opt_useCapture For events that bubble, indicates 
whether to listen for the event in the capture or bubbling/target phase.
++     * @see [EventDispatcher]
++     * @returns {(Object|null)} Returns the listener for chaining or 
assignment.
++     */
++createjs.EventDispatcher.prototype.addEventListener = function (type, 
listener, opt_useCapture) {  return null; }
++
++    /**
++     * @param {(Event|Object|null)} eventObj 
++     * @param {(Object|null)} eventPhase 
++     * @see [EventDispatcher]
++     */
++createjs.EventDispatcher.prototype._dispatchEvent = function (eventObj, 
eventPhase) {  }
++
++    /**
++     * Dispatches the specified event to all listeners.
++     * 
++     * <h4>Example</h4>
++     * 
++     * // Use a string event
++     * this.dispatchEvent("complete");
++     * 
++     * // Use an Event instance
++     * var event = new createjs.Event("progress");
++     * this.dispatchEvent(event);
++     *
++     * @param {(Event|Object|null)} eventObj An object with a "type" 
property, or a string type. While a generic object will work, it is recommended 
to use a CreateJS Event instance. If a string is used, dispatchEvent will 
construct an Event instance with the specified type.
++     * @see [EventDispatcher]
++     * @returns {(boolean|null)} Returns the value of 
eventObj.defaultPrevented.
++     */
++createjs.EventDispatcher.prototype.dispatchEvent = function (eventObj) {  
return null; }
++
++    /**
++     * Removes the specified event listener.
++     * 
++     * <b>Important Note:</b> that you must pass the exact function reference 
used when the event was added. If a proxy
++     * function, or function closure is used as the callback, the 
proxy/closure reference must be used - a new proxy or
++     * closure will not work.
++     * 
++     * <h4>Example</h4>
++     * 
++     * displayObject.removeEventListener("click", handleClick);
++     *
++     * @param {(string|null)} type The string type of the event.
++     * @param {(Object|null)} listener The listener function or object.
++     * @param {boolean=} opt_useCapture For events that bubble, indicates 
whether to listen for the event in the capture or bubbling/target phase.
++     * @see [EventDispatcher]
++     */
++createjs.EventDispatcher.prototype.removeEventListener = function (type, 
listener, opt_useCapture) {  }
++
++    /**
++     * A shortcut method for using addEventListener that makes it easier to 
specify an execution scope, have a listener
++     * only run once, associate arbitrary data with the listener, and remove 
the listener.
++     * 
++     * This method works by creating an anonymous wrapper function and 
subscribing it with addEventListener.
++     * The created anonymous function is returned for use with 
.removeEventListener (or .off).
++     * 
++     * <h4>Example</h4>
++     * 
++     * var listener = myBtn.on("click", handleClick, null, false, {count:3});
++     * function handleClick(evt, data) {
++     * data.count -= 1;
++     * console.log(this == myBtn); // true - scope defaults to the dispatcher
++     * if (data.count == 0) {
++     * alert("clicked 3 times!");
++     * myBtn.off("click", listener);
++     * // alternately: evt.remove();
++     * }
++     * }
++     *
++     * @param {(string|null)} type The string type of the event.
++     * @param {(Object|null)} listener An object with a handleEvent method, 
or a function that will be called when the event is dispatched.
++     * @param {Object=} opt_scope The scope to execute the listener in. 
Defaults to the dispatcher/currentTarget for function listeners, and to the 
listener itself for object listeners (ie. using handleEvent).
++     * @param {boolean=} opt_once If true, the listener will remove itself 
after the first time it is triggered.
++     * @param {*=} opt_data Arbitrary data that will be included as the 
second parameter when the listener is called.
++     * @param {boolean=} opt_useCapture For events that bubble, indicates 
whether to listen for the event in the capture or bubbling/target phase.
++     * @see [EventDispatcher]
++     * @returns {(Function|null)} Returns the anonymous function that was 
created and assigned as the listener. This is needed to remove the listener 
later using .removeEventListener.
++     */
++createjs.EventDispatcher.prototype.on = function (type, listener, opt_scope, 
opt_once, opt_data, opt_useCapture) {  return null; }
++
++    /**
++     * @see [EventDispatcher]
++     * @returns {(string|null)} a string representation of the instance.
++     */
++createjs.EventDispatcher.prototype.toString = function () {  return null; }
++
++    /**
++     * Indicates whether there is at least one listener for the specified 
event type.
++     *
++     * @param {(string|null)} type The string type of the event.
++     * @see [EventDispatcher]
++     * @returns {(boolean|null)} Returns true if there is at least one 
listener for the specified event.
++     */
++createjs.EventDispatcher.prototype.hasEventListener = function (type) {  
return null; }
++
+diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js
+index 3c5c4a6..6adbfb6 100644
+--- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js
++++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js
+@@ -1,632 +1,183 @@
+-/*
+-* Ticker
+-* Visit http://createjs.com/ for documentation, updates and examples.
+-*
+-* Copyright (c) 2010 gskinner.com, inc.
+-*
+-* Permission is hereby granted, free of charge, to any person
+-* obtaining a copy of this software and associated documentation
+-* files (the "Software"), to deal in the Software without
+-* restriction, including without limitation the rights to use,
+-* copy, modify, merge, publish, distribute, sublicense, and/or sell
+-* copies of the Software, and to permit persons to whom the
+-* Software is furnished to do so, subject to the following
+-* conditions:
+-*
+-* The above copyright notice and this permission notice shall be
+-* included in all copies or substantial portions of the Software.
+-*
+-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+-* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+-* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+-* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+-* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+-* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+-* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+-* OTHER DEALINGS IN THE SOFTWARE.
+-*/
+-
++/** @fileoverview Auto-generated Externs files
++ * @externs
++ */
+ /**
+- * @module CreateJS
++ * The Ticker provides a centralized tick or heartbeat broadcast at a set 
interval. Listeners can subscribe to the tick
++ * event to be notified when a set time interval has elapsed.
++ * 
++ * Note that the interval that the tick event is called is a target interval, 
and may be broadcast at a slower interval
++ * when under high CPU load. The Ticker class uses a static interface (ex. 
`createjs.Ticker.framerate = 30;`) and
++ * can not be instantiated.
 + * 
 + * <h4>Example</h4>
 + * 
@@ -999,7 +1004,8 @@ index 3c5c4a6..3f97740 100644
 + * }
 + *
 + * @see [Ticker]
-+ * @constructor  */
++ * @constructor
+  */
 +createjs.Ticker = function () {}
 +
 +    /**
@@ -1085,22 +1091,22 @@ index 3c5c4a6..3f97740 100644
 +    /**
 +     * Returns the actual frames / ticks per second.
 +     *
-+     * @param {(number|null|undefined)} ticks The number of previous ticks 
over which to measure the actual frames / ticks per second. Defaults to the 
number of ticks per second.
++     * @param {number=} opt_ticks The number of previous ticks over which to 
measure the actual frames / ticks per second. Defaults to the number of ticks 
per second.
 +     * @see [Ticker]
 +     * @returns {(number|null)} The actual frames / ticks per second. 
Depending on performance, this may differ from the target frames per second.
 +     */
-+createjs.Ticker.getMeasuredFPS = function (ticks) { return 0; }
++createjs.Ticker.getMeasuredFPS = function (opt_ticks) { return 0; }
 +
 +    /**
 +     * Returns the number of milliseconds that have elapsed since Ticker was 
initialized via {{#crossLink "Ticker/init"}}.
 +     * Returns -1 if Ticker has not been initialized. For example, you could 
use
 +     * this in a time synchronized animation to determine the exact amount of 
time that has elapsed.
 +     *
-+     * @param {(boolean|null|undefined)} runTime If true only time elapsed 
while Ticker was not paused will be returned. If false, the value returned will 
be total time elapsed since the first tick event listener was added.
++     * @param {boolean=} opt_runTime If true only time elapsed while Ticker 
was not paused will be returned. If false, the value returned will be total 
time elapsed since the first tick event listener was added.
 +     * @see [Ticker]
 +     * @returns {(number|null)} Number of milliseconds that have elapsed 
since Ticker was initialized or -1.
 +     */
-+createjs.Ticker.getTime = function (runTime) { return 0; }
++createjs.Ticker.getTime = function (opt_runTime) { return 0; }
 +
 +    /**
 +     * Returns the average time spent within a tick. This can vary 
significantly from the value provided by getMeasuredFPS
@@ -1114,11 +1120,11 @@ index 3c5c4a6..3f97740 100644
 +     * one tick and the end of the next. However, getMeasuredTickTime() 
returns 20ms. This would indicate that something
 +     * other than the tick is using ~80ms (another script, DOM rendering, 
etc).
 +     *
-+     * @param {(number|null|undefined)} ticks The number of previous ticks 
over which to measure the average time spent in a tick. Defaults to the number 
of ticks per second. To get only the last tick's time, pass in 1.
++     * @param {number=} opt_ticks The number of previous ticks over which to 
measure the average time spent in a tick. Defaults to the number of ticks per 
second. To get only the last tick's time, pass in 1.
 +     * @see [Ticker]
 +     * @returns {(number|null)} The average time spent in a tick in 
milliseconds.
 +     */
-+createjs.Ticker.getMeasuredTickTime = function (ticks) { return 0; }
++createjs.Ticker.getMeasuredTickTime = function (opt_ticks) { return 0; }
 +
 +    /**
 +     * Generated doc for missing method JSDoc.
@@ -1836,10 +1842,10 @@ index d09a381..4cdf289 100644
        var subP = subclass.prototype, supP = 
(Object.getPrototypeOf&&Object.getPrototypeOf(subP))||subP.__proto__;
        if (supP) {
 diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js
-index eecac1a..99c556d 100644
+index eecac1a..4fbd265 100644
 --- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js
 +++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js
-@@ -1,214 +1,34 @@
+@@ -1,214 +1,36 @@
 -/*
 -* Bitmap
 -* Visit http://createjs.com/ for documentation, updates and examples.
@@ -1895,7 +1901,9 @@ index eecac1a..99c556d 100644
 + * </ol>
 + *
 + * @see [Bitmap]
-+ * @constructor  * @extends createjs.DisplayObject
++ * @param {(HTMLCanvasElement|HTMLVideoElement|Image|string|null)} imageOrUri 
The source object or URI to an image to display. This can be either an Image, 
Canvas, or Video object, or a string URI to an image file to load and use. If 
it is a URI, a new Image object will be constructed and assigned to the .image 
property.
++ * @constructor
++ * @extends createjs.DisplayObject
 + */
 +createjs.Bitmap = function (imageOrUri) {}
  
@@ -2082,10 +2090,10 @@ index eecac1a..99c556d 100644
 -      createjs.Bitmap = createjs.promote(Bitmap, "DisplayObject");
 -}());
 diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js
 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js
-index bad6f1c..ff6f112 100644
+index b028d9b..6e030ec 100644
 --- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js
 +++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js
-@@ -1,343 +1,57 @@
+@@ -1,343 +1,60 @@
 -/*
 -* BitmapText
 -* Visit http://createjs.com/ for documentation, updates and examples.
@@ -2126,9 +2134,12 @@ index bad6f1c..ff6f112 100644
 + * As such, methods like addChild and removeChild are disabled.
 + *
 + * @see [BitmapText]
-+ * @constructor  * @extends createjs.DisplayObject
++ * @param {string=} opt_text The text to display.
++ * @param {createjs.SpriteSheet=} opt_spriteSheet The spritesheet that 
defines the character glyphs.
++ * @constructor
++ * @extends createjs.DisplayObject
 + */
-+createjs.BitmapText = function (text, spriteSheet) {}
++createjs.BitmapText = function (opt_text, opt_spriteSheet) {}
 +
 +    /**
 +     * @param {(createjs.SpriteSheet|null)} ss 
@@ -2485,11 +2496,12 @@ index bad6f1c..ff6f112 100644
 -
 -      createjs.BitmapText = createjs.promote(BitmapText, "Container");
 -}());
+\ No newline at end of file
 diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Container.js
 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Container.js
-index ea406f7..2f58e1f 100644
+index b6bac78..f468405 100644
 --- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Container.js
 +++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Container.js
-@@ -1,690 +1,309 @@
+@@ -1,690 +1,310 @@
 -/*
 -* Container
 -* Visit http://createjs.com/ for documentation, updates and examples.
@@ -2526,29 +2538,19 @@ index ea406f7..2f58e1f 100644
 -      
 -
 -// constructor:
-+/** @fileoverview Auto-generated Externs files
-+ * @externs
-+ */
- /**
-  * A Container is a nestable display list that allows you to work with 
compound display elements. For  example you could
-  * group arm, leg, torso and head {{#crossLink "Bitmap"}}{{/crossLink}} 
instances together into a Person Container, and
-  * transform them as a group, while still being able to move the individual 
parts relative to each other. Children of
-  * containers have their <code>transform</code> and <code>alpha</code> 
properties concatenated with their parent
+-/**
+- * A Container is a nestable display list that allows you to work with 
compound display elements. For  example you could
+- * group arm, leg, torso and head {{#crossLink "Bitmap"}}{{/crossLink}} 
instances together into a Person Container, and
+- * transform them as a group, while still being able to move the individual 
parts relative to each other. Children of
+- * containers have their <code>transform</code> and <code>alpha</code> 
properties concatenated with their parent
 - * Container.
 - *
-+ * createjs.Container.
-+ * 
-  * For example, a {{#crossLink "Shape"}}{{/crossLink}} with x=100 and 
alpha=0.5, placed in a Container with <code>x=50</code>
-  * and <code>alpha=0.7</code> will be rendered to the canvas at 
<code>x=150</code> and <code>alpha=0.35</code>.
-  * Containers have some overhead, so you generally shouldn't create a 
Container to hold a single child.
+- * For example, a {{#crossLink "Shape"}}{{/crossLink}} with x=100 and 
alpha=0.5, placed in a Container with <code>x=50</code>
+- * and <code>alpha=0.7</code> will be rendered to the canvas at 
<code>x=150</code> and <code>alpha=0.35</code>.
+- * Containers have some overhead, so you generally shouldn't create a 
Container to hold a single child.
+- *
+- * <h4>Example</h4>
 - *
-+ * 
-  * <h4>Example</h4>
-+ * 
-+ * var container = new createjs.Container();
-+ * container.addChild(bitmapInstance, shapeInstance);
-+ * container.x = 100;
-  *
 - *      var container = new createjs.Container();
 - *      container.addChild(bitmapInstance, shapeInstance);
 - *      container.x = 100;
@@ -2605,122 +2607,7 @@ index ea406f7..2f58e1f 100644
 -      p.getNumChildren = function() {
 -              return this.children.length;
 -      };
-+ * @see [Container]
-+ * @constructor  * @extends createjs.DisplayObject
-+ */
-+createjs.Container = function () {}
-+
-+    /**
-+     * @type {(Function|null)} 
-+     * @see [missing]
-+     */
-+createjs.Container.prototype.onClick;
-+
-+    /**
-+     * Returns the number of children in the container.
-+     *
-+     * @type {(number|null)} 
-+     * @see [Container]
-+     */
-+createjs.Container.prototype.numChildren;
-+
-+    /**
-+     * Performs an array sort operation on the child list.
-+     * 
-+     * <h4>Example: Display children with a higher y in front.</h4>
-+     * 
-+     * var sortFunction = function(obj1, obj2, options) {
-+     * if (obj1.y > obj2.y) { return 1; }
-+     * if (obj1.y < obj2.y) { return -1; }
-+     * return 0;
-+     * }
-+     * container.sortChildren(sortFunction);
-+     *
-+     * @param {(Function|null)} sortFunction the function to use to sort the 
child list. See JavaScript's <code>Array.sort</code> documentation for details.
-+     * @see [Container]
-+     */
-+createjs.Container.prototype.sortChildren = function (sortFunction) {  }
-+
-+    /**
-+     * Returns the index of the specified child in the display list, or -1 if 
it is not in the display list.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * var index = container.getChildIndex(child);
-+     *
-+     * @param {(createjs.DisplayObject|null)} child The child to return the 
index of.
-+     * @see [Container]
-+     * @returns {(number|null)} The index of the specified child. -1 if the 
child is not found.
-+     */
-+createjs.Container.prototype.getChildIndex = function (child) { return 0; }
-+
-+    /**
-+     * Returns true if the specified display object either is this container 
or is a descendent (child, grandchild, etc)
-+     * of this container.
-+     *
-+     * @param {(createjs.DisplayObject|null)} child The DisplayObject to be 
checked.
-+     * @see [Container]
-+     * @returns {(boolean|null)} true if the specified display object either 
is this container or is a descendent.
-+     */
-+createjs.Container.prototype.contains = function (child) {  return null; }
-+
-+
-+    /**
-+     * Adds a child to the display list at the specified index, bumping 
children at equal or greater indexes up one, and
-+     * setting its parent to this createjs.Container.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * addChildAt(child1, index);
-+     * 
-+     * You can also add multiple children, such as:
-+     * 
-+     * addChildAt(child1, child2, ..., index);
-+     * 
-+     * The index must be between 0 and numChildren. For example, to add 
myShape under otherShape in the display list,
-+     * you could use:
-+     * 
-+     * container.addChildAt(myShape, container.getChildIndex(otherShape));
-+     * 
-+     * This would also bump otherShape's index up by one. Fails silently if 
the index is out of range.
-+     *
-+     * @param {(createjs.DisplayObject|null)} child The display object to add.
-+     * @param {(number|null)} index The index to add the child at.
-+     * @see [Container]
-+     * @returns {(createjs.DisplayObject|null)} Returns the last child that 
was added, or the last child if multiple children were added.
-+     */
-+createjs.Container.prototype.addChildAt = function (child, index) {  return 
null; }
-+
-+    /**
-+     * Removes all children from the display list.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * container.removeAlLChildren();
-+     *
-+     * @see [Container]
-+     */
-+createjs.Container.prototype.removeAllChildren = function () {  }
-+
-+    /**
-+     * Removes the child at the specified index from the display list, and 
sets its parent to null.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * container.removeChildAt(2);
-+     * 
-+     * You can also remove multiple children:
-+     * 
-+     * container.removeChild(2, 7, ...)
-+     * 
-+     * Returns true if the child (or children) was removed, or false if any 
index was out of range.
-+     *
-+     * @param {(number|null)} index The index of the child to remove.
-+     * @see [Container]
-+     * @returns {(boolean|null)} true if the child (or children) was removed, 
or false if any index was out of range.
-+     */
-+createjs.Container.prototype.removeChildAt = function (index) {  return null; 
}
- 
+-
 -      /**
 -       * Returns the number of children in the container.
 -       * @property numChildren
@@ -2733,7 +2620,7 @@ index ea406f7..2f58e1f 100644
 -              });
 -      } catch (e) {}
 -      
- 
+-
 -// public methods:
 -      /**
 -       * Constructor alias for backwards compatibility. This method will be 
removed in future versions.
@@ -2755,14 +2642,7 @@ index ea406f7..2f58e1f 100644
 -              var hasContent = this.cacheCanvas || this.children.length;
 -              return !!(this.visible && this.alpha > 0 && this.scaleX != 0 && 
this.scaleY != 0 && hasContent);
 -      };
-+    /**
-+     * Use the {{#crossLink "Container/numChildren:property"}}{{/crossLink}} 
property instead.
-+     *
-+     * @see [Container]
-+     * @returns {(number|null)} 
-+     */
-+createjs.Container.prototype.getNumChildren = function () { return 0; }
- 
+-
 -      /**
 -       * Draws the display object into the specified context ignoring its 
visible, alpha, shadow, and transform.
 -       * Returns true if the draw was handled (useful for overriding 
functionality).
@@ -2820,15 +2700,7 @@ index ea406f7..2f58e1f 100644
 -              child.dispatchEvent("added");
 -              return child;
 -      };
-+    /**
-+     * Swaps the children at the specified indexes. Fails silently if either 
index is out of range.
-+     *
-+     * @param {(number|null)} index1 
-+     * @param {(number|null)} index2 
-+     * @see [Container]
-+     */
-+createjs.Container.prototype.swapChildrenAt = function (index1, index2) {  }
- 
+-
 -      /**
 -       * Adds a child to the display list at the specified index, bumping 
children at equal or greater indexes up one, and
 -       * setting its parent to this Container.
@@ -2867,7 +2739,7 @@ index ea406f7..2f58e1f 100644
 -              child.dispatchEvent("added");
 -              return child;
 -      };
- 
+-
 -      /**
 -       * Removes the specified child from the display list. Note that it is 
faster to use removeChildAt() if the index is
 -       * already known.
@@ -2894,7 +2766,7 @@ index ea406f7..2f58e1f 100644
 -              }
 -              return this.removeChildAt(createjs.indexOf(this.children, 
child));
 -      };
- 
+-
 -      /**
 -       * Removes the child at the specified index from the display list, and 
sets its parent to null.
 -       *
@@ -2928,7 +2800,7 @@ index ea406f7..2f58e1f 100644
 -              child.dispatchEvent("removed");
 -              return true;
 -      };
- 
+-
 -      /**
 -       * Removes all children from the display list.
 -       *
@@ -2942,15 +2814,7 @@ index ea406f7..2f58e1f 100644
 -              var kids = this.children;
 -              while (kids.length) { this.removeChildAt(0); }
 -      };
-+    /**
-+     * Returns the child with the specified name.
-+     *
-+     * @param {(string|null)} name The name of the child to return.
-+     * @see [Container]
-+     * @returns {(createjs.DisplayObject|null)} The child with the specified 
name.
-+     */
-+createjs.Container.prototype.getChildByName = function (name) {  return null; 
}
- 
+-
 -      /**
 -       * Returns the child at the specified index.
 -       *
@@ -2979,7 +2843,7 @@ index ea406f7..2f58e1f 100644
 -              }
 -              return null;
 -      };
- 
+-
 -      /**
 -       * Performs an array sort operation on the child list.
 -       *
@@ -2999,19 +2863,7 @@ index ea406f7..2f58e1f 100644
 -      p.sortChildren = function(sortFunction) {
 -              this.children.sort(sortFunction);
 -      };
-+    /**
-+     * Returns the child at the specified index.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * container.getChildAt(2);
-+     *
-+     * @param {(number|null)} index The index of the child to return.
-+     * @see [Container]
-+     * @returns {(createjs.DisplayObject|null)} The child at the specified 
index. Returns null if there is no child at the index.
-+     */
-+createjs.Container.prototype.getChildAt = function (index) {  return null; }
- 
+-
 -      /**
 -       * Returns the index of the specified child in the display list, or -1 
if it is not in the display list.
 -       *
@@ -3078,16 +2930,7 @@ index ea406f7..2f58e1f 100644
 -              kids.splice(i,1);
 -              kids.splice(index,0,child);
 -      };
-+    /**
-+     * Swaps the specified children's depth in the display list. Fails 
silently if either child is not a child of this
-+     * createjs.Container.
-+     *
-+     * @param {(createjs.DisplayObject|null)} child1 
-+     * @param {(createjs.DisplayObject|null)} child2 
-+     * @see [Container]
-+     */
-+createjs.Container.prototype.swapChildren = function (child1, child2) {  }
- 
+-
 -      /**
 -       * Returns true if the specified display object either is this 
container or is a descendent (child, grandchild, etc)
 -       * of this container.
@@ -3102,19 +2945,7 @@ index ea406f7..2f58e1f 100644
 -              }
 -              return false;
 -      };
-+    /**
-+     * Similar to {{#crossLink 
"Container/getObjectsUnderPoint"}}{{/crossLink}}, but returns only the top-most 
display
-+     * object. This runs significantly faster than 
<code>getObjectsUnderPoint()</code>, but is still potentially an expensive
-+     * operation. See {{#crossLink 
"Container/getObjectsUnderPoint"}}{{/crossLink}} for more information.
-+     *
-+     * @param {(number|null)} x The x position in the container to test.
-+     * @param {(number|null)} y The y position in the container to test.
-+     * @param {(number|null)} mode The mode to use to determine which display 
objects to include.  0-all, 1-respect mouseEnabled/mouseChildren, 2-only mouse 
opaque objects.
-+     * @see [Container]
-+     * @returns {(createjs.DisplayObject|null)} The top-most display object 
under the specified coordinates.
-+     */
-+createjs.Container.prototype.getObjectUnderPoint = function (x, y, mode) {  
return null; }
- 
+-
 -      /**
 -       * Tests whether the display object intersects the specified local 
point (ie. draws a pixel with alpha > 0 at the
 -       * specified position). This ignores the alpha, shadow and 
compositeOperation of the display object, and all
@@ -3129,7 +2960,7 @@ index ea406f7..2f58e1f 100644
 -              // TODO: optimize to use the fast cache check where possible.
 -              return (this.getObjectUnderPoint(x, y) != null);
 -      };
- 
+-
 -      /**
 -       * Returns an array of all display objects under the specified 
coordinates that are in this container's display
 -       * list. This routine ignores any display objects with {{#crossLink 
"DisplayObject/mouseEnabled:property"}}{{/crossLink}}
@@ -3161,7 +2992,7 @@ index ea406f7..2f58e1f 100644
 -              this._getObjectsUnderPoint(pt.x, pt.y, arr, mode>0, mode==1);
 -              return arr;
 -      };
- 
+-
 -      /**
 -       * Similar to {{#crossLink 
"Container/getObjectsUnderPoint"}}{{/crossLink}}, but returns only the top-most 
display
 -       * object. This runs significantly faster than 
<code>getObjectsUnderPoint()</code>, but is still potentially an expensive
@@ -3191,15 +3022,7 @@ index ea406f7..2f58e1f 100644
 -      p.getTransformedBounds = function() {
 -              return this._getBounds();
 -      };
-+    /**
-+     * Changes the depth of the specified child. Fails silently if the child 
is not a child of this container, or the index is out of range.
-+     *
-+     * @param {(createjs.DisplayObject|null)} child 
-+     * @param {(number|null)} index 
-+     * @see [Container]
-+     */
-+createjs.Container.prototype.setChildIndex = function (child, index) {  }
- 
+-
 -      /**
 -       * Returns a clone of this Container. Some properties that are specific 
to this instance's current context are
 -       * reverted to their defaults (for example .parent).
@@ -3213,34 +3036,7 @@ index ea406f7..2f58e1f 100644
 -              if (recursive) { this._cloneChildren(o); }
 -              return o;
 -      };
-+    /**
-+     * Returns an array of all display objects under the specified 
coordinates that are in this container's display
-+     * list. This routine ignores any display objects with {{#crossLink 
"DisplayObject/mouseEnabled:property"}}{{/crossLink}}
-+     * set to `false`. The array will be sorted in order of visual depth, 
with the top-most display object at index 0.
-+     * This uses shape based hit detection, and can be an expensive operation 
to run, so it is best to use it carefully.
-+     * For example, if testing for objects under the mouse, test on tick 
(instead of on {{#crossLink "DisplayObject/mousemove:event"}}{{/crossLink}}),
-+     * and only if the mouse's position has changed.
-+     * 
-+     * <ul>
-+     * <li>By default (mode=0) this method evaluates all display objects.</li>
-+     * <li>By setting the `mode` parameter to `1`, the {{#crossLink 
"DisplayObject/mouseEnabled:property"}}{{/crossLink}}
-+     * and {{#crossLink "mouseChildren:property"}}{{/crossLink}} properties 
will be respected.</li>
-+     * <li>Setting the `mode` to `2` additionally excludes display objects 
that do not have active mouse event
-+     * listeners or a {{#crossLink 
"DisplayObject:cursor:property"}}{{/crossLink}} property. That is, only objects
-+     * that would normally intercept mouse interaction will be included. This 
can significantly improve performance
-+     * in some cases by reducing the number of display objects that need to 
be tested.</li>
-+     * </li>
-+     * 
-+     * This method accounts for both {{#crossLink 
"DisplayObject/hitArea:property"}}{{/crossLink}} and {{#crossLink 
"DisplayObject/mask:property"}}{{/crossLink}}.
-+     *
-+     * @param {(number|null)} x The x position in the container to test.
-+     * @param {(number|null)} y The y position in the container to test.
-+     * @param {(number|null|undefined)} mode The mode to use to determine 
which display objects to include. 0-all, 1-respect mouseEnabled/mouseChildren, 
2-only mouse opaque objects.
-+     * @see [Container]
-+     * @returns {(Array|null)} An Array of DisplayObjects under the specified 
coordinates.
-+     */
-+createjs.Container.prototype.getObjectsUnderPoint = function (x, y, mode) {  
return null; }
- 
+-
 -      /**
 -       * Returns a string representation of this object.
 -       * @method toString
@@ -3249,38 +3045,8 @@ index ea406f7..2f58e1f 100644
 -      p.toString = function() {
 -              return "[Container (name="+  this.name +")]";
 -      };
-+    /**
-+     * Removes the specified child from the display list. Note that it is 
faster to use removeChildAt() if the index is
-+     * already known.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * container.removeChild(child);
-+     * 
-+     * You can also remove multiple children:
-+     * 
-+     * removeChild(child1, child2, ...);
-+     * 
-+     * Returns true if the child (or children) was removed, or false if it 
was not in the display list.
-+     *
-+     * @param {(createjs.DisplayObject|null)} child The child to remove.
-+     * @see [Container]
-+     * @returns {(boolean|null)} true if the child (or children) was removed, 
or false if it was not in the display list.
-+     */
-+createjs.Container.prototype.removeChild = function (child) {  return null; }
- 
-+    /**
-+     * @param {(number|null)} x 
-+     * @param {(number|null)} y 
-+     * @param {(Array|null)} arr 
-+     * @param {(boolean|null)} mouse If true, it will respect mouse 
interaction properties like mouseEnabled, mouseChildren, and active listeners.
-+     * @param {(boolean|null)} activeListener If true, there is an active 
mouse event listener on a parent object.
-+     * @param {(number|null)} currentDepth Indicates the current depth of the 
search.
-+     * @see [Container]
-+     * @returns {(createjs.DisplayObject|null)} 
-+     */
-+createjs.Container.prototype._getObjectsUnderPoint = function (x, y, arr, 
mouse, activeListener, currentDepth) {  return null; }
- 
+-
+-
 -// private methods:
 -      /**
 -       * @method _tick
@@ -3312,15 +3078,7 @@ index ea406f7..2f58e1f 100644
 -                      arr.push(clone);
 -              }
 -      };
-+    /**
-+     * @param {(createjs.DisplayObject|null)} target 
-+     * @param {(number|null)} x 
-+     * @param {(number|null)} y 
-+     * @see [Container]
-+     * @returns {(boolean|null)} Indicates whether the x/y is within the 
masked region.
-+     */
-+createjs.Container.prototype._testMask = function (target, x, y) {  return 
null; }
- 
+-
 -      /**
 -       * @method _getObjectsUnderPoint
 -       * @param {Number} x
@@ -3337,23 +3095,7 @@ index ea406f7..2f58e1f 100644
 -              if (!currentDepth && !this._testMask(this, x, y)) { return 
null; }
 -              var mtx, ctx = createjs.DisplayObject._hitTestContext;
 -              activeListener = activeListener || 
(mouse&&this._hasMouseEventListener());
-+    /**
-+     * Adds a child to the top of the display list.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * container.addChild(bitmapInstance);
-+     * 
-+     * You can also add multiple children at once:
-+     * 
-+     * container.addChild(bitmapInstance, shapeInstance, textInstance);
-+     *
-+     * @param {(createjs.DisplayObject|null)} child The display object to add.
-+     * @see [Container]
-+     * @returns {(createjs.DisplayObject|null)} The child that was added, or 
the last child if multiple children were added.
-+     */
-+createjs.Container.prototype.addChild = function (child) {  return null; }
- 
+-
 -              // draw children one at a time, and check if we get a hit:
 -              var children = this.children, l = children.length;
 -              for (var i=l-1; i>=0; i--) {
@@ -3446,2193 +3188,2505 @@ index ea406f7..2f58e1f 100644
 -              }
 -              return rect;
 -      };
- 
-+    /**
-+     * Recursively clones all children of this container, and adds them to 
the target container.
-+     *
-+     * @param {(createjs.Container|null)} o The target container.
-+     * @see [Container]
-+     */
-+createjs.Container.prototype._cloneChildren = function (o) {  }
- 
+-
+-
 -      createjs.Container = createjs.promote(Container, "DisplayObject");
 -}());
-diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js
 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js
-index f6eab31..de5f57e 100644
---- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js
-+++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js
-@@ -1,273 +1,53 @@
--/*
--* DOMElement
--* Visit http://createjs.com/ for documentation, updates and examples.
--*
--* Copyright (c) 2010 gskinner.com, inc.
--*
--* Permission is hereby granted, free of charge, to any person
--* obtaining a copy of this software and associated documentation
--* files (the "Software"), to deal in the Software without
--* restriction, including without limitation the rights to use,
--* copy, modify, merge, publish, distribute, sublicense, and/or sell
--* copies of the Software, and to permit persons to whom the
--* Software is furnished to do so, subject to the following
--* conditions:
--*
--* The above copyright notice and this permission notice shall be
--* included in all copies or substantial portions of the Software.
--*
--* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
--* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
--* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
--* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
--* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
--* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
--* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
--* OTHER DEALINGS IN THE SOFTWARE.
--*/
--
+\ No newline at end of file
 +/** @fileoverview Auto-generated Externs files
 + * @externs
 + */
- /**
-- * @module EaselJS
-+ * <b>This class is still experimental, and more advanced use is likely to be 
buggy. Please report bugs.</b>
-+ * 
-+ * A DOMElement allows you to associate a HTMLElement with the display list. 
It will be transformed
-+ * within the DOM as though it is child of the {{#crossLink 
"Container"}}{{/crossLink}} it is added to. However, it is
-+ * not rendered to canvas, and as such will retain whatever z-index it has 
relative to the canvas (ie. it will be
-+ * drawn in front of or behind the canvas).
-+ * 
-+ * The position of a DOMElement is relative to their parent node in the DOM. 
It is recommended that
-+ * the DOM Object be added to a div that also contains the canvas so that 
they share the same position
-+ * on the page.
-+ * 
-+ * DOMElement is useful for positioning HTML elements over top of canvas 
content, and for elements
-+ * that you want to display outside the bounds of the canvas. For example, a 
tooltip with rich HTML
-+ * content.
++/**
++ * A Container is a nestable display list that allows you to work with 
compound display elements. For  example you could
++ * group arm, leg, torso and head {{#crossLink "Bitmap"}}{{/crossLink}} 
instances together into a Person Container, and
++ * transform them as a group, while still being able to move the individual 
parts relative to each other. Children of
++ * containers have their <code>transform</code> and <code>alpha</code> 
properties concatenated with their parent
++ * createjs.Container.
 + * 
-+ * <h4>Mouse Interaction</h4>
++ * For example, a {{#crossLink "Shape"}}{{/crossLink}} with x=100 and 
alpha=0.5, placed in a Container with <code>x=50</code>
++ * and <code>alpha=0.7</code> will be rendered to the canvas at 
<code>x=150</code> and <code>alpha=0.35</code>.
++ * Containers have some overhead, so you generally shouldn't create a 
Container to hold a single child.
 + * 
-+ * DOMElement instances are not full EaselJS display objects, and do not 
participate in EaselJS mouse
-+ * events or support methods like hitTest. To get mouse events from a 
DOMElement, you must instead add handlers to
-+ * the htmlElement (note, this does not support EventDispatcher)
++ * <h4>Example</h4>
 + * 
-+ * var domElement = new createjs.DOMElement(htmlElement);
-+ * domElement.htmlElement.onclick = function() {
-+ * console.log("clicked");
-+ * }
++ * var container = new createjs.Container();
++ * container.addChild(bitmapInstance, shapeInstance);
++ * container.x = 100;
 + *
-+ * @see [DOMElement]
-+ * @constructor  * @extends createjs.DisplayObject
-  */
-+createjs.DOMElement = function (htmlElement) {}
- 
--// namespace:
--this.createjs = this.createjs||{};
--
--(function() {
--      "use strict";
--
--
--// constructor:
--      /**
--       * <b>This class is still experimental, and more advanced use is likely 
to be buggy. Please report bugs.</b>
--       *
--       * A DOMElement allows you to associate a HTMLElement with the display 
list. It will be transformed
--       * within the DOM as though it is child of the {{#crossLink 
"Container"}}{{/crossLink}} it is added to. However, it is
--       * not rendered to canvas, and as such will retain whatever z-index it 
has relative to the canvas (ie. it will be
--       * drawn in front of or behind the canvas).
--       *
--       * The position of a DOMElement is relative to their parent node in the 
DOM. It is recommended that
--       * the DOM Object be added to a div that also contains the canvas so 
that they share the same position
--       * on the page.
--       *
--       * DOMElement is useful for positioning HTML elements over top of 
canvas content, and for elements
--       * that you want to display outside the bounds of the canvas. For 
example, a tooltip with rich HTML
--       * content.
--       *
--       * <h4>Mouse Interaction</h4>
--       *
--       * DOMElement instances are not full EaselJS display objects, and do 
not participate in EaselJS mouse
--       * events or support methods like hitTest. To get mouse events from a 
DOMElement, you must instead add handlers to
--       * the htmlElement (note, this does not support EventDispatcher)
--       *
--       *      var domElement = new createjs.DOMElement(htmlElement);
--       *      domElement.htmlElement.onclick = function() {
--       *          console.log("clicked");
--       *      }
--       *
--       * @class DOMElement
--       * @extends DisplayObject
--       * @constructor
--       * @param {HTMLElement} htmlElement A reference or id for the DOM 
element to manage.
--       */
--      function DOMElement(htmlElement) {
--              this.DisplayObject_constructor();
--              
--              if (typeof(htmlElement)=="string") { htmlElement = 
document.getElementById(htmlElement); }
--              this.mouseEnabled = false;
--              
--              var style = htmlElement.style;
--              style.position = "absolute";
--              style.transformOrigin = style.WebkitTransformOrigin = 
style.msTransformOrigin = style.MozTransformOrigin = style.OTransformOrigin = 
"0% 0%";
--              
--              
--      // public properties:
--              /**
--               * The DOM object to manage.
--               * @property htmlElement
--               * @type HTMLElement
--               */
--              this.htmlElement = htmlElement;
--      
--      
--      // private properties:
--              /**
--               * @property _oldMtx
--               * @type Matrix2D
--               * @protected
--               */
--              this._oldProps = null;
--      }
--      var p = createjs.extend(DOMElement, createjs.DisplayObject);
--
--      // TODO: deprecated
--      // p.initialize = function() {}; // searchable for devs wondering where 
it is. REMOVED. See docs for details.
--
--
--// public methods:
--      /**
--       * Returns true or false indicating whether the display object would be 
visible if drawn to a canvas.
--       * This does not account for whether it would be visible within the 
boundaries of the stage.
--       * NOTE: This method is mainly for internal use, though it may be 
useful for advanced uses.
--       * @method isVisible
--       * @return {Boolean} Boolean indicating whether the display object 
would be visible if drawn to a canvas
--       */
--      p.isVisible = function() {
--              return this.htmlElement != null;
--      };
--
--      /**
--       * Draws the display object into the specified context ignoring its 
visible, alpha, shadow, and transform.
--       * Returns true if the draw was handled (useful for overriding 
functionality).
--       * NOTE: This method is mainly for internal use, though it may be 
useful for advanced uses.
--       * @method draw
--       * @param {CanvasRenderingContext2D} ctx The canvas 2D context object 
to draw into.
--       * @param {Boolean} ignoreCache Indicates whether the draw operation 
should ignore any current cache.
--       * For example, used for drawing the cache (to prevent it from simply 
drawing an existing cache back
--       * into itself).
--       * @return {Boolean}
--       */
--      p.draw = function(ctx, ignoreCache) {
--              // this relies on the _tick method because draw isn't called if 
the parent is not visible.
--              // the actual update happens in _handleDrawEnd
--              return true;
--      };
--
--      /**
--       * Not applicable to DOMElement.
--       * @method cache
--       */
--      p.cache = function() {};
--
--      /**
--       * Not applicable to DOMElement.
--       * @method uncache
--       */
--      p.uncache = function() {};
--
--      /**
--       * Not applicable to DOMElement.
--       * @method updateCache
--       */
--      p.updateCache = function() {};
--
--      /**
--       * Not applicable to DOMElement.
--       * @method hitTest
--       */
--      p.hitTest = function() {};
--
--      /**
--       * Not applicable to DOMElement.
--       * @method localToGlobal
--       */
--      p.localToGlobal = function() {};
- 
--      /**
--       * Not applicable to DOMElement.
--       * @method globalToLocal
--       */
--      p.globalToLocal = function() {};
- 
--      /**
--       * Not applicable to DOMElement.
--       * @method localToLocal
--       */
--      p.localToLocal = function() {};
- 
--      /**
--       * DOMElement cannot be cloned. Throws an error.
--       * @method clone
--       */
--      p.clone = function() {
--              throw("DOMElement cannot be cloned.")
--      };
- 
--      /**
--       * Returns a string representation of this object.
--       * @method toString
--       * @return {String} a string representation of the instance.
--       */
--      p.toString = function() {
--              return "[DOMElement (name="+  this.name +")]";
--      };
- 
--      /**
--     * Interaction events should be added to `htmlElement`, and not the 
DOMElement instance, since DOMElement instances
--       * are not full EaselJS display objects and do not participate in 
EaselJS mouse events.
--       * @event click
--       */
- 
--     /**
--     * Interaction events should be added to `htmlElement`, and not the 
DOMElement instance, since DOMElement instances
--       * are not full EaselJS display objects and do not participate in 
EaselJS mouse events.
--       * @event dblClick
--       */
- 
--     /**
--      * Interaction events should be added to `htmlElement`, and not the 
DOMElement instance, since DOMElement instances
--        * are not full EaselJS display objects and do not participate in 
EaselJS mouse events.
--        * @event mousedown
--        */
- 
--     /**
--      * The HTMLElement can listen for the mouseover event, not the 
DOMElement instance.
--      * Since DOMElement instances are not full EaselJS display objects and 
do not participate in EaselJS mouse events.
--      * @event mouseover
--        */
- 
--     /**
--      * Not applicable to DOMElement.
--        * @event tick
--        */
- 
- 
--// private methods:
--      /**
--       * @method _tick
--       * @param {Object} evtObj An event object that will be dispatched to 
all tick listeners. This object is reused between dispatchers to reduce 
construction & GC costs.
--       * function.
--       * @protected
--       */
--      p._tick = function(evtObj) {
--              var stage = this.getStage();
--              stage&&stage.on("drawend", this._handleDrawEnd, this, true);
--              this.DisplayObject__tick(evtObj);
--      };
--      
--      /**
--       * @method _handleDrawEnd
--       * @param {Event} evt
--       * @protected
--       */
--      p._handleDrawEnd = function(evt) {
--              var o = this.htmlElement;
--              if (!o) { return; }
--              var style = o.style;
--              
--              var props = this.getConcatenatedDisplayProps(this._props), mtx 
= props.matrix;
--              
--              var visibility = props.visible ? "visible" : "hidden";
--              if (visibility != style.visibility) { style.visibility = 
visibility; }
--              if (!props.visible) { return; }
--              
--              var oldProps = this._oldProps, oldMtx = 
oldProps&&oldProps.matrix;
--              var n = 10000; // precision
--              
--              if (!oldMtx || !oldMtx.equals(mtx)) {
--                      var str = "matrix(" + (mtx.a*n|0)/n +","+ (mtx.b*n|0)/n 
+","+ (mtx.c*n|0)/n +","+ (mtx.d*n|0)/n +","+ (mtx.tx+0.5|0);
--                      style.transform = style.WebkitTransform = 
style.OTransform = style.msTransform = str +","+ (mtx.ty+0.5|0) +")";
--                      style.MozTransform = str +"px,"+ (mtx.ty+0.5|0) +"px)";
--                      if (!oldProps) { oldProps = this._oldProps = new 
createjs.DisplayProps(true, NaN); }
--                      oldProps.matrix.copy(mtx);
--              }
--              
--              if (oldProps.alpha != props.alpha) {
--                      style.opacity = ""+(props.alpha*n|0)/n;
--                      oldProps.alpha = props.alpha;
--              }
--      };
- 
-+    /**
-+     * @param {(Event|null)} evt 
-+     * @see [DOMElement]
-+     */
-+createjs.DOMElement.prototype._handleDrawEnd = function (evt) {  }
- 
--      createjs.DOMElement = createjs.promote(DOMElement, "DisplayObject");
--}());
-diff --git 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js
 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js
-index 90b4526..ee21bf6 100644
---- 
a/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js
-+++ 
b/externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js
-@@ -1,1364 +1,492 @@
--/*
--* DisplayObject
--* Visit http://createjs.com/ for documentation, updates and examples.
--*
--* Copyright (c) 2010 gskinner.com, inc.
--* 
--* Permission is hereby granted, free of charge, to any person
--* obtaining a copy of this software and associated documentation
--* files (the "Software"), to deal in the Software without
--* restriction, including without limitation the rights to use,
--* copy, modify, merge, publish, distribute, sublicense, and/or sell
--* copies of the Software, and to permit persons to whom the
--* Software is furnished to do so, subject to the following
--* conditions:
--* 
--* The above copyright notice and this permission notice shall be
--* included in all copies or substantial portions of the Software.
--* 
--* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
--* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
--* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
--* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
--* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
--* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
--* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
--* OTHER DEALINGS IN THE SOFTWARE.
--*/
--
-+/** @fileoverview Auto-generated Externs files
-+ * @externs
++ * @see [Container]
++ * @constructor
++ * @extends createjs.DisplayObject
 + */
- /**
-- * The EaselJS Javascript library provides a retained graphics mode for 
canvas including a full hierarchical display
-- * list, a core interaction model, and helper classes to make working with 2D 
graphics in Canvas much easier.
-- * EaselJS provides straight forward solutions for working with rich graphics 
and interactivity with HTML5 Canvas...
-- *
-- * <h4>Getting Started</h4>
-- * To get started with Easel, create a {{#crossLink "Stage"}}{{/crossLink}} 
that wraps a CANVAS element, and add
-- * {{#crossLink "DisplayObject"}}{{/crossLink}} instances as children. 
EaselJS supports:
-- * <ul>
-- *      <li>Images using {{#crossLink "Bitmap"}}{{/crossLink}}</li>
-- *      <li>Vector graphics using {{#crossLink "Shape"}}{{/crossLink}} and 
{{#crossLink "Graphics"}}{{/crossLink}}</li>
-- *      <li>Animated bitmaps using {{#crossLink "SpriteSheet"}}{{/crossLink}} 
and {{#crossLink "Sprite"}}{{/crossLink}}
-- *      <li>Simple text instances using {{#crossLink 
"Text"}}{{/crossLink}}</li>
-- *      <li>Containers that hold other DisplayObjects using {{#crossLink 
"Container"}}{{/crossLink}}</li>
-- *      <li>Control HTML DOM elements using {{#crossLink 
"DOMElement"}}{{/crossLink}}</li>
-- * </ul>
-- *
-- * All display objects can be added to the stage as children, or drawn to a 
canvas directly.
-- *
-- * <b>User Interactions</b><br />
-- * All display objects on stage (except DOMElement) will dispatch events when 
interacted with using a mouse or
-- * touch. EaselJS supports hover, press, and release events, as well as an 
easy-to-use drag-and-drop model. Check out
-- * {{#crossLink "MouseEvent"}}{{/crossLink}} for more information.
-- *
-- * <h4>Simple Example</h4>
-- * This example illustrates how to create and position a {{#crossLink 
"Shape"}}{{/crossLink}} on the {{#crossLink "Stage"}}{{/crossLink}}
-- * using EaselJS' drawing API.
-- *
-- *        //Create a stage by getting a reference to the canvas
-- *        stage = new createjs.Stage("demoCanvas");
-- *        //Create a Shape DisplayObject.
-- *        circle = new createjs.Shape();
-- *        circle.graphics.beginFill("red").drawCircle(0, 0, 40);
-- *        //Set position of Shape instance.
-- *        circle.x = circle.y = 50;
-- *        //Add Shape instance to stage display list.
-- *        stage.addChild(circle);
-- *        //Update stage will render next frame
-- *        stage.update();
-- *
-- * <b>Simple Interaction Example</b><br>
-- *
-- *      displayObject.addEventListener("click", handleClick);
-- *      function handleClick(event){
-- *          // Click happenened
-- *      }
-- *
-- *      displayObject.addEventListener("mousedown", handlePress);
-- *      function handlePress(event) {
-- *          // A mouse press happened.
-- *          // Listen for mouse move while the mouse is down:
-- *          event.addEventListener("mousemove", handleMove);
-- *      }
-- *      function handleMove(event) {
-- *          // Check out the DragAndDrop example in GitHub for more
-- *      }
-- *
-- * <b>Simple Animation Example</b><br />
-- * This example moves the shape created in the previous demo across the 
screen.
-- *
-- *        //Update stage will render next frame
-- *        createjs.Ticker.addEventListener("tick", handleTick);
-+ * DisplayObject is an abstract class that should not be constructed 
directly. Instead construct subclasses such as
-+ * {{#crossLink "Container"}}{{/crossLink}}, {{#crossLink 
"Bitmap"}}{{/crossLink}}, and {{#crossLink "Shape"}}{{/crossLink}}.
-+ * DisplayObject is the base class for all display classes in the EaselJS 
library. It defines the core properties and
-+ * methods that are shared between all display objects, such as 
transformation properties (x, y, scaleX, scaleY, etc),
-+ * caching, and mouse handlers.
-  *
-- *        function handleTick() {
-- *          //Circle will move 10 units to the right.
-- *            circle.x += 10;
-- *            //Will cause the circle to wrap back
-- *            if (circle.x > stage.canvas.width) { circle.x = 0; }
-- *            stage.update();
-- *        }
-- *
-- * <h4>Other Features</h4>
-- * EaselJS also has built in support for
-- * <ul><li>Canvas features such as {{#crossLink "Shadow"}}{{/crossLink}} and 
CompositeOperation</li>
-- *      <li>{{#crossLink "Ticker"}}{{/crossLink}}, a global heartbeat that 
objects can subscribe to</li>
-- *      <li>Filters, including a provided {{#crossLink 
"ColorMatrixFilter"}}{{/crossLink}}, {{#crossLink 
"AlphaMaskFilter"}}{{/crossLink}},
-- *      {{#crossLink "AlphaMapFilter"}}{{/crossLink}}, and {{#crossLink 
"BlurFilter"}}{{/crossLink}}. See {{#crossLink "Filter"}}{{/crossLink}}
-- *      for more information</li>
-- *      <li>A {{#crossLink "ButtonHelper"}}{{/crossLink}} utility, to easily 
create interactive buttons</li>
-- *      <li>{{#crossLink "SpriteSheetUtils"}}{{/crossLink}} and a 
{{#crossLink "SpriteSheetBuilder"}}{{/crossLink}} to
-- *      help build and manage {{#crossLink "SpriteSheet"}}{{/crossLink}} 
functionality at run-time.</li>
-- * </ul>
-- *
-- * <h4>Browser Support</h4>
-- * All modern browsers that support Canvas will support EaselJS (<a 
href="http://caniuse.com/canvas";>http://caniuse.com/canvas</a>).
-- * Browser performance may vary between platforms, for example, Android 
Canvas has poor hardware support, and is much
-- * slower on average than most other browsers.
-- *
-- * @module EaselJS
-- * @main EaselJS
-+ * @see [DisplayObject]
-+ * @constructor  * @extends createjs.EventDispatcher
-  */
-+createjs.DisplayObject = function () {}
++createjs.Container = function () {}
 +
 +    /**
-+     * @type {number} 
++     * @type {(Function|null)} 
 +     * @see [missing]
 +     */
-+createjs.DisplayObject.prototype.height;
++createjs.Container.prototype.onClick;
 +
 +    /**
-+     * @type {boolean} 
-+     * @see [missing]
++     * Returns the number of children in the container.
++     *
++     * @type {(number|null)} 
++     * @see [Container]
 +     */
-+createjs.DisplayObject.prototype.visible;
++createjs.Container.prototype.numChildren;
 +
 +    /**
-+     * @type {number} 
-+     * @see [missing]
++     * Performs an array sort operation on the child list.
++     * 
++     * <h4>Example: Display children with a higher y in front.</h4>
++     * 
++     * var sortFunction = function(obj1, obj2, options) {
++     * if (obj1.y > obj2.y) { return 1; }
++     * if (obj1.y < obj2.y) { return -1; }
++     * return 0;
++     * }
++     * container.sortChildren(sortFunction);
++     *
++     * @param {(Function|null)} sortFunction the function to use to sort the 
child list. See JavaScript's <code>Array.sort</code> documentation for details.
++     * @see [Container]
 +     */
-+createjs.DisplayObject.prototype.alpha;
++createjs.Container.prototype.sortChildren = function (sortFunction) {  }
 +
 +    /**
-+     * @type {string} 
-+     * @see [missing]
++     * Returns the index of the specified child in the display list, or -1 if 
it is not in the display list.
++     * 
++     * <h4>Example</h4>
++     * 
++     * var index = container.getChildIndex(child);
++     *
++     * @param {(createjs.DisplayObject|null)} child The child to return the 
index of.
++     * @see [Container]
++     * @returns {(number|null)} The index of the specified child. -1 if the 
child is not found.
 +     */
-+createjs.DisplayObject.prototype.name;
++createjs.Container.prototype.getChildIndex = function (child) { return 0; }
 +
 +    /**
-+     * @type {number} 
-+     * @see [missing]
-+     */
-+createjs.DisplayObject.prototype.width;
-+
-+    /**
-+     * @type {(createjs.Graphics|null)} 
-+     * @see [missing]
-+     */
-+createjs.DisplayObject.prototype.graphics;
-+
-+    /**
-+     * Returns the Stage instance that this display object will be rendered 
on, or null if it has not been added to one.
++     * Returns true if the specified display object either is this container 
or is a descendent (child, grandchild, etc)
++     * of this container.
 +     *
-+     * @type {(createjs.Stage|null)} 
-+     * @see [DisplayObject]
-+     */
-+createjs.DisplayObject.prototype.stage;
-+
-+    /**
-+     * @type {number} 
-+     * @see [missing]
++     * @param {(createjs.DisplayObject|null)} child The DisplayObject to be 
checked.
++     * @see [Container]
++     * @returns {(boolean|null)} true if the specified display object either 
is this container or is a descendent.
 +     */
-+createjs.DisplayObject.prototype.y;
++createjs.Container.prototype.contains = function (child) {  return null; }
 +
-+    /**
-+     * @type {number} 
-+     * @see [missing]
-+     */
-+createjs.DisplayObject.prototype.x;
 +
 +    /**
-+     * Applies this display object's transformation, alpha, 
globalCompositeOperation, clipping path (mask), and shadow
-+     * to the specified context. This is typically called prior to 
{{#crossLink "DisplayObject/draw"}}{{/crossLink}}.
++     * Adds a child to the display list at the specified index, bumping 
children at equal or greater indexes up one, and
++     * setting its parent to this createjs.Container.
++     * 
++     * <h4>Example</h4>
++     * 
++     * addChildAt(child1, index);
++     * 
++     * You can also add multiple children, such as:
++     * 
++     * addChildAt(child1, child2, ..., index);
++     * 
++     * The index must be between 0 and numChildren. For example, to add 
myShape under otherShape in the display list,
++     * you could use:
++     * 
++     * container.addChildAt(myShape, container.getChildIndex(otherShape));
++     * 
++     * This would also bump otherShape's index up by one. Fails silently if 
the index is out of range.
 +     *
-+     * @param {(CanvasRenderingContext2D|null)} ctx The canvas 2D to update.
-+     * @see [DisplayObject]
++     * @param {(createjs.DisplayObject|null)} child The display object to add.
++     * @param {(number|null)} index The index to add the child at.
++     * @see [Container]
++     * @returns {(createjs.DisplayObject|null)} Returns the last child that 
was added, or the last child if multiple children were added.
 +     */
-+createjs.DisplayObject.prototype.updateContext = function (ctx) {  }
++createjs.Container.prototype.addChildAt = function (child, index) {  return 
null; }
 +
 +    /**
-+     * Provides a chainable shortcut method for setting a number of 
properties on the instance.
++     * Removes all children from the display list.
 +     * 
 +     * <h4>Example</h4>
 +     * 
-+     * var myGraphics = new 
createjs.Graphics().beginFill("#ff0000").drawCircle(0, 0, 25);
-+     * var shape = stage.addChild(new Shape()).set({graphics:myGraphics, 
x:100, y:100, alpha:0.5});
++     * container.removeAlLChildren();
 +     *
-+     * @param {(Object|null)} props A generic object containing properties to 
copy to the DisplayObject instance.
-+     * @see [DisplayObject]
-+     * @returns {(createjs.DisplayObject|null)} Returns the instance the 
method is called on (useful for chaining calls.)
++     * @see [Container]
 +     */
-+createjs.DisplayObject.prototype.set = function (props) {  return null; }
++createjs.Container.prototype.removeAllChildren = function () {  }
 +
 +    /**
-+     * Transforms the specified x and y position from the coordinate space of 
the display object
-+     * to the global (stage) coordinate space. For example, this could be 
used to position an HTML label
-+     * over a specific point on a nested display object. Returns a Point 
instance with x and y properties
-+     * correlating to the transformed coordinates on the stage.
++     * Removes the child at the specified index from the display list, and 
sets its parent to null.
 +     * 
 +     * <h4>Example</h4>
 +     * 
-+     * displayObject.x = 300;
-+     * displayObject.y = 200;
-+     * stage.addChild(displayObject);
-+     * var point = mycreatejs.DisplayObject.localToGlobal(100, 100);
-+     * // Results in x=400, y=300
++     * container.removeChildAt(2);
++     * 
++     * You can also remove multiple children:
++     * 
++     * container.removeChild(2, 7, ...)
++     * 
++     * Returns true if the child (or children) was removed, or false if any 
index was out of range.
 +     *
-+     * @param {(number|null)} x The x position in the source display object 
to transform.
-+     * @param {(number|null)} y The y position in the source display object 
to transform.
-+     * @param {(Object|createjs.Point|null|undefined)} pt An object to copy 
the result into. If omitted a new Point object with x/y properties will be 
returned.
-+     * @see [DisplayObject]
-+     * @returns {(createjs.Point|null)} A Point instance with x and y 
properties correlating to the transformed coordinates on the stage.
++     * @param {(number|null)} index The index of the child to remove.
++     * @see [Container]
++     * @returns {(boolean|null)} true if the child (or children) was removed, 
or false if any index was out of range.
 +     */
-+createjs.DisplayObject.prototype.localToGlobal = function (x, y, pt) {  
return null; }
++createjs.Container.prototype.removeChildAt = function (index) {  return null; 
}
 +
-+    /**
-+     * @param {(CanvasRenderingContext2D|null)} ctx 
-+     * @see [DisplayObject]
-+     * @returns {(boolean|null)} 
-+     */
-+createjs.DisplayObject.prototype._testHit = function (ctx) {  return null; }
 +
 +    /**
-+     * @see [DisplayObject]
-+     * @returns {(createjs.Rectangle|null)} 
++     * Use the {{#crossLink "Container/numChildren:property"}}{{/crossLink}} 
property instead.
++     *
++     * @see [Container]
++     * @returns {(number|null)} 
 +     */
-+createjs.DisplayObject.prototype._getFilterBounds = function (rect) {  return 
null; }
++createjs.Container.prototype.getNumChildren = function () { return 0; }
 +
 +    /**
-+     * Indicates whether the display object has any mouse event listeners or 
a cursor.
++     * Swaps the children at the specified indexes. Fails silently if either 
index is out of range.
 +     *
-+     * @see [DisplayObject]
-+     * @returns {(boolean|null)} 
++     * @param {(number|null)} index1 
++     * @param {(number|null)} index2 
++     * @see [Container]
 +     */
-+createjs.DisplayObject.prototype._hasMouseEventListener = function () {  
return null; }
++createjs.Container.prototype.swapChildrenAt = function (index1, index2) {  }
++
++
 +
-+    /**
-+     * @param {(createjs.Matrix2D|null)} matrix 
-+     * @param {(boolean|null)} ignoreTransform If true, does not apply this 
object's transform.
-+     * @see [DisplayObject]
-+     * @returns {(createjs.Rectangle|null)} 
-+     */
-+createjs.DisplayObject.prototype._getBounds = function (matrix, 
ignoreTransform) {  return null; }
 +
 +    /**
-+     * @param {(createjs.Rectangle|null)} bounds 
-+     * @param {(createjs.Matrix2D|null)} matrix 
-+     * @param {(boolean|null)} ignoreTransform 
-+     * @see [DisplayObject]
-+     * @returns {(createjs.Rectangle|null)} 
++     * Returns the child with the specified name.
++     *
++     * @param {(string|null)} name The name of the child to return.
++     * @see [Container]
++     * @returns {(createjs.DisplayObject|null)} The child with the specified 
name.
 +     */
-+createjs.DisplayObject.prototype._transformBounds = function (bounds, matrix, 
ignoreTransform) {  return null; }
++createjs.Container.prototype.getChildByName = function (name) {  return null; 
}
++
 +
 +    /**
-+     * Draws the display object into the specified context ignoring its 
visible, alpha, shadow, and transform.
-+     * Returns <code>true</code> if the draw was handled (useful for 
overriding functionality).
++     * Returns the child at the specified index.
 +     * 
-+     * NOTE: This method is mainly for internal use, though it may be useful 
for advanced uses.
++     * <h4>Example</h4>
++     * 
++     * container.getChildAt(2);
 +     *
-+     * @param {(CanvasRenderingContext2D|null)} ctx The canvas 2D context 
object to draw into.
-+     * @param {(boolean|null|undefined)} ignoreCache Indicates whether the 
draw operation should ignore any current cache. For example, used for drawing 
the cache (to prevent it from simply drawing an existing cache back into 
itself).
-+     * @see [DisplayObject]
-+     * @returns {(boolean|null)} 
++     * @param {(number|null)} index The index of the child to return.
++     * @see [Container]
++     * @returns {(createjs.DisplayObject|null)} The child at the specified 
index. Returns null if there is no child at the index.
 +     */
-+createjs.DisplayObject.prototype.draw = function (ctx, ignoreCache) {  return 
null; }
++createjs.Container.prototype.getChildAt = function (index) {  return null; }
 +
 +    /**
-+     * @param {(Object|null)} evtObj An event object that will be dispatched 
to all tick listeners. This object is reused between dispatchers to reduce 
construction & GC costs.
-+     * @see [DisplayObject]
++     * Swaps the specified children's depth in the display list. Fails 
silently if either child is not a child of this
++     * createjs.Container.
++     *
++     * @param {(createjs.DisplayObject|null)} child1 
++     * @param {(createjs.DisplayObject|null)} child2 
++     * @see [Container]
 +     */
-+createjs.DisplayObject.prototype._tick = function (evtObj) {  }
++createjs.Container.prototype.swapChildren = function (child1, child2) {  }
 +
 +    /**
-+     * Tests whether the display object intersects the specified point in 
local coordinates (ie. draws a pixel with alpha > 0 at
-+     * the specified position). This ignores the alpha, shadow, hitArea, 
mask, and compositeOperation of the display object.
-+     * 
-+     * <h4>Example</h4>
-+     * 
-+     * stage.addEventListener("stagemousedown", handleMouseDown);
-+     * function handleMouseDown(event) {
-+     * var hit = myShape.hitTest(event.stageX, event.stageY);
-+     * }
-+     * 
-+     * Please note that shape-to-shape collision is not currently supported 
by EaselJS.
++     * Similar to {{#crossLink 
"Container/getObjectsUnderPoint"}}{{/crossLink}}, but returns only the top-most 
display
++     * object. This runs significantly faster than 
<code>getObjectsUnderPoint()</code>, but is still potentially an expensive
++     * operation. See {{#crossLink 
"Container/getObjectsUnderPoint"}}{{/crossLink}} for more information.
 +     *
-+     * @param {(number|null)} x The x position to check in the display 
object's local coordinates.
-+     * @param {(number|null)} y The y position to check in the display 
object's local coordinates.
-+     * @see [DisplayObject]
-+     * @returns {(boolean|null)} A Boolean indicating whether a visible 
portion of the DisplayObject intersect the specified local Point.
++     * @param {(number|null)} x The x position in the container to test.
++     * @param {(number|null)} y The y position in the container to test.
++     * @param {(number|null)} mode The mode to use to determine which display 
objects to include.  0-all, 1-respect mouseEnabled/mouseChildren, 2-only mouse 
opaque objects.
++     * @see [Container]
++     * @returns {(createjs.DisplayObject|null)} The top-most display object 
under the specified coordinates.
 +     */
-+createjs.DisplayObject.prototype.hitTest = function (x, y) {  return null; }
++createjs.Container.prototype.getObjectUnderPoint = function (x, y, mode) {  
return null; }
++
++
 +
 +    /**
-+     * Returns true or false indicating whether the display object would be 
visible if drawn to a canvas.
-+     * This does not account for whether it would be visible within the 
boundaries of the stage.
-+     * 
-+     * NOTE: This method is mainly for internal use, though it may be useful 
for advanced uses.
++     * Changes the depth of the specified child. Fails silently if the child 
is not a child of this container, or the index is out of range.
 +     *
-+     * @see [DisplayObject]
-+     * @returns {(boolean|null)} Boolean indicating whether the display 
object would be visible if drawn to a canvas
++     * @param {(createjs.DisplayObject|null)} child 
++     * @param {(number|null)} index 
++     * @see [Container]
 +     */
-+createjs.DisplayObject.prototype.isVisible = function () {  return null; }
++createjs.Container.prototype.setChildIndex = function (child, index) {  }
 +
 +    /**
-+     * @see [DisplayObject]
++     * Returns an array of all display objects under the specified 
coordinates that are in this container's display
++     * list. This routine ignores any display objects with {{#crossLink 
"DisplayObject/mouseEnabled:property"}}{{/crossLink}}
++     * set to `false`. The array will be sorted in order of visual depth, 
with the top-most display object at index 0.
++     * This uses shape based hit detection, and can be an expensive operation 
to run, so it is best to use it carefully.
++     * For example, if testing for objects under the mouse, test on tick 
(instead of on {{#crossLink "DisplayObject/mousemove:event"}}{{/crossLink}}),
++     * and only if the mouse's position has changed.
++     * 
++     * <ul>
++     * <li>By default (mode=0) this method evaluates all display objects.</li>
++     * <li>By setting the `mode` parameter to `1`, the {{#crossLink 
"DisplayObject/mouseEnabled:property"}}{{/crossLink}}
++     * and {{#crossLink "mouseChildren:property"}}{{/crossLink}} properties 
will be respected.</li>
+

<TRUNCATED>

Reply via email to