mirror of
https://github.com/photonstorm/phaser
synced 2024-11-27 23:20:59 +00:00
135 lines
3.3 KiB
TypeScript
135 lines
3.3 KiB
TypeScript
/// <reference path="../Game.ts" />
|
|
/// <reference path="Tween.ts" />
|
|
|
|
/**
|
|
* Phaser - TweenManager
|
|
*
|
|
* The Game has a single instance of the TweenManager through which all Tween objects are created and updated.
|
|
* Tweens are hooked into the game clock and pause system, adjusting based on the game state.
|
|
* TweenManager is based heavily on tween.js by sole (http://soledadpenades.com).
|
|
* I converted it to TypeScript, swapped the callbacks for signals and patched a few issues with regard
|
|
* to properties and completion errors. Please see https://github.com/sole/tween.js for a full list of contributors.
|
|
*/
|
|
|
|
module Phaser {
|
|
|
|
export class TweenManager {
|
|
|
|
/**
|
|
* TweenManager constructor
|
|
* @param game {Game} A reference to the current Game.
|
|
*/
|
|
constructor(game: Phaser.Game) {
|
|
|
|
this._game = game;
|
|
this._tweens = [];
|
|
|
|
}
|
|
|
|
/**
|
|
* Local private reference to Game
|
|
*/
|
|
private _game: Phaser.Game;
|
|
|
|
/**
|
|
* Local private array which is the container of all tween objects.
|
|
*/
|
|
private _tweens: Phaser.Tween[];
|
|
|
|
/**
|
|
* Get all the tween objects in an array.
|
|
* @return {Phaser.Tween[]} Array with all tween objects.
|
|
*/
|
|
public getAll() {
|
|
|
|
return this._tweens;
|
|
|
|
}
|
|
|
|
/**
|
|
* Remove all tween objects.
|
|
*/
|
|
public removeAll() {
|
|
|
|
this._tweens.length = 0;
|
|
|
|
}
|
|
|
|
/**
|
|
* Create a tween object for a specific object.
|
|
*
|
|
* @param object {object} Object you wish the tween will affect.
|
|
* @return {Phaser.Tween} The newly created tween object.
|
|
*/
|
|
public create(object): Phaser.Tween {
|
|
|
|
return new Phaser.Tween(object, this._game);
|
|
|
|
}
|
|
|
|
/**
|
|
* Add an exist tween object to the manager.
|
|
*
|
|
* @param tween {Phaser.Tween} The tween object you want to add.
|
|
* @return {Phaser.Tween} The tween object you added to the manager.
|
|
*/
|
|
public add(tween: Phaser.Tween) {
|
|
|
|
tween.parent = this._game;
|
|
|
|
this._tweens.push(tween);
|
|
|
|
return tween;
|
|
|
|
}
|
|
|
|
/**
|
|
* Remove a tween from this manager.
|
|
*
|
|
* @param tween {Phaser.Tween} The tween object you want to remove.
|
|
*/
|
|
public remove(tween: Phaser.Tween) {
|
|
|
|
var i = this._tweens.indexOf(tween);
|
|
|
|
if (i !== -1)
|
|
{
|
|
this._tweens.splice(i, 1);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Update all the tween objects you added to this manager.
|
|
*
|
|
* @return {boolean} Return false if there's no tween to update, otherwise return true.
|
|
*/
|
|
public update() {
|
|
|
|
if (this._tweens.length === 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var i = 0;
|
|
var numTweens = this._tweens.length;
|
|
|
|
while (i < numTweens)
|
|
{
|
|
if (this._tweens[i].update(this._game.time.now))
|
|
{
|
|
i++;
|
|
}
|
|
else
|
|
{
|
|
this._tweens.splice(i, 1);
|
|
numTweens--;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
}
|