starling-framework
Version:
A fast, productive library for 2D cross-platform development.
177 lines (160 loc) • 5.97 kB
JavaScript
// Class: starling.animation.Transitions
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;
function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");}
// Constructor
var Transitions = function(){}
// Meta
Transitions.__name__ = "starling.animation.Transitions";
Transitions.__isInterface__ = false;
Transitions.prototype = {
};
Transitions.prototype.__class__ = Transitions.prototype.constructor = $hxClasses["starling.animation.Transitions"] = Transitions;
// Init
// Statics
Transitions.getTransition = function(name) {
if(Transitions.sTransitions == null) {
Transitions.registerDefaults();
}
return Transitions.sTransitions.get(name);
}
Transitions.register = function(name,func) {
if(Transitions.sTransitions == null) {
Transitions.registerDefaults();
}
Transitions.sTransitions.set(name,func);
}
Transitions.registerDefaults = function() {
Transitions.sTransitions = new (haxe_ds_StringMap().default)();
Transitions.register("linear",Transitions.linear);
Transitions.register("easeIn",Transitions.easeIn);
Transitions.register("easeOut",Transitions.easeOut);
Transitions.register("easeInOut",Transitions.easeInOut);
Transitions.register("easeOutIn",Transitions.easeOutIn);
Transitions.register("easeInBack",Transitions.easeInBack);
Transitions.register("easeOutBack",Transitions.easeOutBack);
Transitions.register("easeInOutBack",Transitions.easeInOutBack);
Transitions.register("easeOutInBack",Transitions.easeOutInBack);
Transitions.register("easeInElastic",Transitions.easeInElastic);
Transitions.register("easeOutElastic",Transitions.easeOutElastic);
Transitions.register("easeInOutElastic",Transitions.easeInOutElastic);
Transitions.register("easeOutInElastic",Transitions.easeOutInElastic);
Transitions.register("easeInBounce",Transitions.easeInBounce);
Transitions.register("easeOutBounce",Transitions.easeOutBounce);
Transitions.register("easeInOutBounce",Transitions.easeInOutBounce);
Transitions.register("easeOutInBounce",Transitions.easeOutInBounce);
}
Transitions.linear = function(ratio) {
return ratio;
}
Transitions.easeIn = function(ratio) {
return ratio * ratio * ratio;
}
Transitions.easeOut = function(ratio) {
var invRatio = ratio - 1.0;
return invRatio * invRatio * invRatio + 1;
}
Transitions.easeInOut = function(ratio) {
return Transitions.easeCombined(Transitions.easeIn,Transitions.easeOut,ratio);
}
Transitions.easeOutIn = function(ratio) {
return Transitions.easeCombined(Transitions.easeOut,Transitions.easeIn,ratio);
}
Transitions.easeInBack = function(ratio) {
var s = 1.70158;
return Math.pow(ratio,2) * ((s + 1.0) * ratio - s);
}
Transitions.easeOutBack = function(ratio) {
var invRatio = ratio - 1.0;
var s = 1.70158;
return Math.pow(invRatio,2) * ((s + 1.0) * invRatio + s) + 1.0;
}
Transitions.easeInOutBack = function(ratio) {
return Transitions.easeCombined(Transitions.easeInBack,Transitions.easeOutBack,ratio);
}
Transitions.easeOutInBack = function(ratio) {
return Transitions.easeCombined(Transitions.easeOutBack,Transitions.easeInBack,ratio);
}
Transitions.easeInElastic = function(ratio) {
if(ratio == 0 || ratio == 1) {
return ratio;
} else {
var p = 0.3;
var s = p / 4.0;
var invRatio = ratio - 1;
return -1.0 * Math.pow(2.0,10.0 * invRatio) * Math.sin((invRatio - s) * (2.0 * Math.PI) / p);
}
}
Transitions.easeOutElastic = function(ratio) {
if(ratio == 0 || ratio == 1) {
return ratio;
} else {
var p = 0.3;
var s = p / 4.0;
return Math.pow(2.0,-10.0 * ratio) * Math.sin((ratio - s) * (2.0 * Math.PI) / p) + 1;
}
}
Transitions.easeInOutElastic = function(ratio) {
return Transitions.easeCombined(Transitions.easeInElastic,Transitions.easeOutElastic,ratio);
}
Transitions.easeOutInElastic = function(ratio) {
return Transitions.easeCombined(Transitions.easeOutElastic,Transitions.easeInElastic,ratio);
}
Transitions.easeInBounce = function(ratio) {
return 1.0 - Transitions.easeOutBounce(1.0 - ratio);
}
Transitions.easeOutBounce = function(ratio) {
var s = 7.5625;
var p = 2.75;
var l;
if(ratio < 1.0 / p) {
l = s * Math.pow(ratio,2);
} else if(ratio < 2.0 / p) {
ratio -= 1.5 / p;
l = s * Math.pow(ratio,2) + 0.75;
} else if(ratio < 2.5 / p) {
ratio -= 2.25 / p;
l = s * Math.pow(ratio,2) + 0.9375;
} else {
ratio -= 2.625 / p;
l = s * Math.pow(ratio,2) + 0.984375;
}
return l;
}
Transitions.easeInOutBounce = function(ratio) {
return Transitions.easeCombined(Transitions.easeInBounce,Transitions.easeOutBounce,ratio);
}
Transitions.easeOutInBounce = function(ratio) {
return Transitions.easeCombined(Transitions.easeOutBounce,Transitions.easeInBounce,ratio);
}
Transitions.easeCombined = function(startFunc,endFunc,ratio) {
if(ratio < 0.5) {
return 0.5 * startFunc(ratio * 2.0);
} else {
return 0.5 * endFunc((ratio - 0.5) * 2.0) + 0.5;
}
}
Transitions.LINEAR = "linear"
Transitions.EASE_IN = "easeIn"
Transitions.EASE_OUT = "easeOut"
Transitions.EASE_IN_OUT = "easeInOut"
Transitions.EASE_OUT_IN = "easeOutIn"
Transitions.EASE_IN_BACK = "easeInBack"
Transitions.EASE_OUT_BACK = "easeOutBack"
Transitions.EASE_IN_OUT_BACK = "easeInOutBack"
Transitions.EASE_OUT_IN_BACK = "easeOutInBack"
Transitions.EASE_IN_ELASTIC = "easeInElastic"
Transitions.EASE_OUT_ELASTIC = "easeOutElastic"
Transitions.EASE_IN_OUT_ELASTIC = "easeInOutElastic"
Transitions.EASE_OUT_IN_ELASTIC = "easeOutInElastic"
Transitions.EASE_IN_BOUNCE = "easeInBounce"
Transitions.EASE_OUT_BOUNCE = "easeOutBounce"
Transitions.EASE_IN_OUT_BOUNCE = "easeInOutBounce"
Transitions.EASE_OUT_IN_BOUNCE = "easeOutInBounce"
// Export
exports.default = Transitions;