UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

287 lines (272 loc) 10 kB
// 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;