starling-framework
Version:
A fast, productive library for 2D cross-platform development.
287 lines (272 loc) • 10 kB
JavaScript
// Class: starling.animation.Juggler
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./../../hxClasses_stub").default;
var $hxEnums = require("./../../hxEnums_stub").default;
var $import = require("./../../import_stub").default;
var $bind = require("./../../bind_stub").default;
function starling_animation_IAnimatable() {return require("./../../starling/animation/IAnimatable");}
function starling_events_EventDispatcher() {return require("./../../starling/events/EventDispatcher");}
function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");}
function starling_animation_Tween() {return require("./../../starling/animation/Tween");}
function starling_animation_DelayedCall() {return require("./../../starling/animation/DelayedCall");}
function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");}
function openfl_errors_ArgumentError() {return $import(require("openfl/errors/ArgumentError"));}
function Type() {return require("./../../Type");}
function Reflect() {return require("./../../Reflect");}
function haxe_ds_ObjectMap() {return require("./../../haxe/ds/ObjectMap");}
// Constructor
var Juggler = function() {
this.__elapsedTime = 0;
this.__timeScale = 1.0;
this.__objects = (openfl__$Vector_Vector_$Impl_$().default)._new();
this.__objectIDs = new (haxe_ds_ObjectMap().default)();
}
// Meta
Juggler.__name__ = "starling.animation.Juggler";
Juggler.__isInterface__ = false;
Juggler.__interfaces__ = [(starling_animation_IAnimatable().default)];
Juggler.prototype = {
add: function(object) {
return this.addWithID(object,Juggler.getNextID());
},
addWithID: function(object,objectID) {
if(object != null && !this.__objectIDs.exists(object)) {
var dispatcher = ((object) instanceof (starling_events_EventDispatcher().default)) ? object : null;
if(dispatcher != null) {
dispatcher.addEventListener("removeFromJuggler",$bind(this,this.onRemove));
}
(openfl__$Vector_Vector_$Impl_$().default).set(this.__objects,this.__objects.length,object);
this.__objectIDs.set(object,objectID);
return objectID;
} else {
return 0;
}
},
contains: function(object) {
return this.__objectIDs.exists(object);
},
remove: function(object) {
var objectID = 0;
if(object != null && this.__objectIDs.exists(object)) {
var dispatcher = ((object) instanceof (starling_events_EventDispatcher().default)) ? object : null;
if(dispatcher != null) {
dispatcher.removeEventListener("removeFromJuggler",$bind(this,this.onRemove));
}
var this1 = this.__objects;
var index = (Array.prototype.indexOf.call)(this1,object,0);
(openfl__$Vector_Vector_$Impl_$().default).set(this.__objects,index,null);
objectID = this.__objectIDs.get(object);
this.__objectIDs.remove(object);
}
return objectID;
},
removeByID: function(objectID) {
var object;
var i = this.__objects.length - 1;
while(i >= 0) {
object = this.__objects[i];
if(object != null && this.__objectIDs.get(object) == objectID) {
this.remove(object);
return objectID;
}
--i;
}
return 0;
},
removeTweens: function(target) {
if(target == null) {
return;
}
var i = this.__objects.length - 1;
while(i >= 0) {
var tween = ((this.__objects[i]) instanceof (starling_animation_Tween().default)) ? this.__objects[i] : null;
if(tween != null && tween.get_target() == target) {
tween.removeEventListener("removeFromJuggler",$bind(this,this.onRemove));
(openfl__$Vector_Vector_$Impl_$().default).set(this.__objects,i,null);
this.__objectIDs.remove(tween);
}
--i;
}
},
removeDelayedCalls: function(callback) {
if(callback == null) {
return;
}
var delayedCall;
var i = this.__objects.length - 1;
while(i >= 0) {
delayedCall = ((this.__objects[i]) instanceof (starling_animation_DelayedCall().default)) ? this.__objects[i] : null;
if(delayedCall != null && delayedCall.__callback == callback) {
delayedCall.removeEventListener("removeFromJuggler",$bind(this,this.onRemove));
(openfl__$Vector_Vector_$Impl_$().default).set(this.__objects,i,null);
this.__objectIDs.remove(delayedCall);
}
--i;
}
},
containsTweens: function(target) {
if(target != null) {
var tween;
var i = this.__objects.length - 1;
while(i >= 0) {
tween = ((this.__objects[i]) instanceof (starling_animation_Tween().default)) ? this.__objects[i] : null;
if(tween != null && tween.get_target() == target) {
return true;
}
--i;
}
}
return false;
},
containsDelayedCalls: function(callback) {
if(callback != null) {
var delayedCall;
var i = this.__objects.length - 1;
while(i >= 0) {
delayedCall = ((this.__objects[i]) instanceof (starling_animation_DelayedCall().default)) ? this.__objects[i] : null;
if(delayedCall != null && delayedCall.__callback == callback) {
return true;
}
--i;
}
}
return false;
},
purge: function() {
var object;
var dispatcher;
var i = this.__objects.length - 1;
while(i >= 0) {
object = this.__objects[i];
if(object != null) {
dispatcher = ((object) instanceof (starling_events_EventDispatcher().default)) ? object : null;
if(dispatcher != null) {
dispatcher.removeEventListener("removeFromJuggler",$bind(this,this.onRemove));
}
(openfl__$Vector_Vector_$Impl_$().default).set(this.__objects,i,null);
this.__objectIDs.remove(object);
}
--i;
}
},
delayCall: function(call,delay,args) {
if(call == null) {
throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("call must not be null"));
}
if(args == null) {
args = [];
}
var delayedCall = (starling_animation_DelayedCall().default).fromPool(call,delay,args);
delayedCall.addEventListener("removeFromJuggler",$bind(this,this.onPooledDelayedCallComplete));
return this.add(delayedCall);
},
repeatCall: function(call,interval,repeatCount,args) {
if(repeatCount == null) {
repeatCount = 0;
}
if(call == null) {
throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("call must not be null"));
}
if(args == null) {
args = [];
}
var delayedCall = (starling_animation_DelayedCall().default).fromPool(call,interval,args);
delayedCall.set_repeatCount(repeatCount);
delayedCall.addEventListener("removeFromJuggler",$bind(this,this.onPooledDelayedCallComplete));
return this.add(delayedCall);
},
onPooledDelayedCallComplete: function(event) {
(starling_animation_DelayedCall().default).toPool(event.target);
},
tween: function(target,time,properties) {
if(target == null) {
throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("target must not be null"));
}
var tween = (starling_animation_Tween().default).fromPool(target,time);
var value;
if(Juggler.sTweenInstanceFields == null) {
Juggler.sTweenInstanceFields = (Type().default).getInstanceFields((starling_animation_Tween().default));
}
var _g = 0;
var _g1 = (Reflect().default).fields(properties);
while(_g < _g1.length) {
var property = _g1[_g];
++_g;
value = (Reflect().default).field(properties,property);
if(Juggler.sTweenInstanceFields.indexOf("set_" + property) != -1) {
(Reflect().default).setProperty(tween,property,value);
} else if((Reflect().default).hasField(target,property) || (Reflect().default).getProperty(target,property) != null) {
tween.animate(property,value);
} else {
throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("Invalid property: " + property));
}
}
tween.addEventListener("removeFromJuggler",$bind(this,this.onPooledTweenComplete));
return this.add(tween);
},
onPooledTweenComplete: function(event) {
(starling_animation_Tween().default).toPool(event.target);
},
advanceTime: function(time) {
var numObjects = this.__objects.length;
var currentIndex = 0;
var i = 0;
this.__elapsedTime += time;
time *= this.__timeScale;
if(numObjects == 0 || time == 0) {
return;
}
var object;
while(i < numObjects) {
object = this.__objects[i];
if(object != null) {
if(currentIndex != i) {
(openfl__$Vector_Vector_$Impl_$().default).set(this.__objects,currentIndex,object);
(openfl__$Vector_Vector_$Impl_$().default).set(this.__objects,i,null);
}
object.advanceTime(time);
++currentIndex;
}
++i;
}
if(currentIndex != i) {
numObjects = this.__objects.length;
while(i < numObjects) (openfl__$Vector_Vector_$Impl_$().default).set(this.__objects,currentIndex++,this.__objects[i++]);
this.__objects.length = currentIndex;
}
},
onRemove: function(event) {
var objectID = this.remove(event.target);
if(objectID != 0) {
var tween = ((event.target) instanceof (starling_animation_Tween().default)) ? event.target : null;
if(tween != null && tween.get_isComplete()) {
this.addWithID(tween.get_nextTween(),objectID);
}
}
},
get_elapsedTime: function() {
return this.__elapsedTime;
},
get_timeScale: function() {
return this.__timeScale;
},
set_timeScale: function(value) {
return this.__timeScale = value;
},
get_objects: function() {
return this.__objects;
}
};
Juggler.prototype.__class__ = Juggler.prototype.constructor = $hxClasses["starling.animation.Juggler"] = Juggler;
// Init
Object.defineProperties(Juggler.prototype,{ elapsedTime : { get : function () { return this.get_elapsedTime (); }}, timeScale : { get : function () { return this.get_timeScale (); }, set : function (v) { return this.set_timeScale (v); }}, objects : { get : function () { return this.get_objects (); }}});
// Statics
Juggler.getNextID = function() {
return ++Juggler.sCurrentObjectID;
}
Juggler.sCurrentObjectID = 0
// Export
exports.default = Juggler;