package com.greensock.easing {
/**
* EaseLookup enables you to find the easing function associated with a particular name (String),
* like "strongEaseOut" which can be useful when loading in XML data that comes in as Strings but
* needs to be translated to native function references.
*
* Copyright 2011, GreenSock. All rights reserved. This work is subject to the terms in http://www.greensock.com/terms_of_use.html or for corporate Club GreenSock members, the software agreement that was issued with the corporate membership.
*
* @author Jack Doyle, jack@greensock.com
*/
public class EaseLookup {
/** @private **/
private static var _lookup:Object;
/**
* Finds the easing function associated with a particular name (String), like "strongEaseOut". This can be useful when
* loading in XML data that comes in as Strings but needs to be translated to native function references. You can pass in
* the name with or without the period, and it is case insensitive, so any of the following will find the Strong.easeOut function:
* EaseLookup.find("Strong.easeOut")
* EaseLookup.find("strongEaseOut")
* EaseLookup.find("strongeaseout")
*
* You can translate Strings directly when tweening, like this:
* TweenLite.to(mc, 1, {x:100, ease:EaseLookup.find(myString)});
*
* @param name The name of the easing function, with or without the period and case insensitive (i.e. "Strong.easeOut" or "strongEaseOut")
* @return The easing function associated with the name
*/
public static function find(name:String):Function {
if (_lookup == null) {
buildLookup();
}
return _lookup[name.toLowerCase()];
}
/** @private **/
private static function buildLookup():void {
_lookup = {};
addInOut(Back, ["back"]);
addInOut(Bounce, ["bounce"]);
addInOut(Circ, ["circ", "circular"]);
addInOut(Cubic, ["cubic"]);
addInOut(Elastic, ["elastic"]);
addInOut(Expo, ["expo", "exponential"]);
addInOut(Linear, ["linear"]);
addInOut(Quad, ["quad", "quadratic"]);
addInOut(Quart, ["quart","quartic"]);
addInOut(Quint, ["quint", "quintic", "strong"]);
addInOut(Sine, ["sine"]);
_lookup["linear.easenone"] = _lookup["lineareasenone"] = Linear.easeNone;
}
/** @private **/
private static function addInOut(easeClass:Class, names:Array):void {
var name:String;
var i:int = names.length;
while (i-- > 0) {
name = names[i].toLowerCase();
_lookup[name + ".easein"] = _lookup[name + "easein"] = easeClass.easeIn;
_lookup[name + ".easeout"] = _lookup[name + "easeout"] = easeClass.easeOut;
_lookup[name + ".easeinout"] = _lookup[name + "easeinout"] = easeClass.easeInOut;
}
}
}
}