mirror of
https://github.com/photonstorm/phaser
synced 2024-12-24 12:03:36 +00:00
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
/// <reference path="../../Game.ts" />
|
|
|
|
/**
|
|
* Phaser - Easing - Elastic
|
|
*
|
|
* For use with Phaser.Tween
|
|
*/
|
|
|
|
module Phaser.Easing {
|
|
|
|
export class Elastic {
|
|
|
|
public static In(k) {
|
|
|
|
var s, a = 0.1, p = 0.4;
|
|
if (k === 0) return 0;
|
|
if (k === 1) return 1;
|
|
if (!a || a < 1) { a = 1; s = p / 4; }
|
|
else s = p * Math.asin(1 / a) / (2 * Math.PI);
|
|
return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));
|
|
|
|
}
|
|
|
|
public static Out(k) {
|
|
|
|
var s, a = 0.1, p = 0.4;
|
|
if (k === 0) return 0;
|
|
if (k === 1) return 1;
|
|
if (!a || a < 1) { a = 1; s = p / 4; }
|
|
else s = p * Math.asin(1 / a) / (2 * Math.PI);
|
|
return (a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1);
|
|
|
|
}
|
|
|
|
public static InOut(k) {
|
|
|
|
var s, a = 0.1, p = 0.4;
|
|
if (k === 0) return 0;
|
|
if (k === 1) return 1;
|
|
if (!a || a < 1) { a = 1; s = p / 4; }
|
|
else s = p * Math.asin(1 / a) / (2 * Math.PI);
|
|
if ((k *= 2) < 1) return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));
|
|
return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|