70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
/*!
|
|
* VERSION: 0.1.3
|
|
* DATE: 2018-08-27
|
|
* UPDATES AND DOCS AT: http://greensock.com
|
|
*
|
|
* @license Copyright (c) 2008-2019, GreenSock. All rights reserved.
|
|
* This work is subject to the terms at http://greensock.com/standard-license or for
|
|
* Club GreenSock members, the software agreement that was issued with your membership.
|
|
*
|
|
* @author: Jack Doyle, jack@greensock.com
|
|
*/
|
|
/* eslint-disable */
|
|
|
|
import { _gsScope } from "./TweenLite.js";
|
|
|
|
export var EndArrayPlugin = _gsScope._gsDefine.plugin({
|
|
propName: "endArray",
|
|
API: 2,
|
|
version: "0.1.3",
|
|
|
|
//called when the tween renders for the first time. This is where initial values should be recorded and any setup routines should run.
|
|
init: function(target, value, tween) {
|
|
var i = value.length,
|
|
a = this.a = [],
|
|
start, end;
|
|
this.target = target;
|
|
this._mod = 0;
|
|
if (!i) {
|
|
return false;
|
|
}
|
|
while (--i > -1) {
|
|
start = target[i];
|
|
end = value[i];
|
|
if (start !== end) {
|
|
a.push({i:i, s:start, c:end - start});
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
|
|
mod: function(lookup) {
|
|
if (typeof(lookup.endArray) === "function") {
|
|
this._mod = lookup.endArray;
|
|
}
|
|
},
|
|
|
|
//called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)
|
|
set: function(ratio) {
|
|
var target = this.target,
|
|
a = this.a,
|
|
i = a.length,
|
|
mod = this._mod,
|
|
e, val;
|
|
if (mod) {
|
|
while (--i > -1) {
|
|
e = a[i];
|
|
target[e.i] = mod(e.s + e.c * ratio, target);
|
|
}
|
|
} else {
|
|
while (--i > -1) {
|
|
e = a[i];
|
|
val = e.s + e.c * ratio;
|
|
target[e.i] = (val < 0.000001 && val > -0.000001) ? 0 : val;
|
|
}
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
export { EndArrayPlugin as default }; |