import IAnimatable from "./IAnimatable"; declare namespace starling.animation { /** * The Juggler takes objects that implement IAnimatable (like Tweens) and executes them. * * * *
A juggler is a simple object. It does no more than saving a list of objects implementing * * "IAnimatable" and advancing their time if it is told to do so (by calling its own * * "advanceTime"-method). When an animation is completed, it throws it away.
* * * *There is a default juggler available at the Starling class:
* * * ** * var juggler:Juggler = Starling.juggler; * ** * * *
You can create juggler objects yourself, just as well. That way, you can group * * your game into logical components that handle their animations independently. All you have * * to do is call the "advanceTime" method on your custom juggler once per frame.
* * * *Another handy feature of the juggler is the "delayCall"-method. Use it to * * execute a function at a later time. Different to conventional approaches, the method * * will only be called when the juggler is advanced, giving you perfect control over the * * call.
* * * *
* * juggler.delayCall(object.removeFromParent, 1.0);
* * juggler.delayCall(object.addChild, 2.0, theChild);
* * juggler.delayCall(function():Void { rotation += 0.1; }, 3.0);
* *
* *
* * @see Tween
* * @see DelayedCall
*
*/
export class Juggler implements IAnimatable {
/**
* Create an empty juggler.
*/
constructor();
/**
* Adds an object to the juggler.
* *
* * @return Unique numeric identifier for the animation. This identifier may be used
* * to remove the object via removeByID().
*
*/
add(object: IAnimatable): number;
addWithID(object: IAnimatable, objectID: number): number;
/**
* Determines if an object has been added to the juggler.
*/
contains(object: IAnimatable): boolean;
/**
* Returns true if there is currently no object being juggled.
*/
get isEmpty(): boolean;
/**
* Removes an object from the juggler.
* *
* * @return The (now meaningless) unique numeric identifier for the animation, or zero
* * if the object was not found.
*
*/
remove(object: IAnimatable): number;
/**
* Removes an object from the juggler, identified by the unique numeric identifier you
* * received when adding it.
* *
* * It's not uncommon that an animatable object is added to a juggler repeatedly,
* * e.g. when using an object-pool. Thus, when using the remove method,
* * you might accidentally remove an object that has changed its context. By using
* * removeByID instead, you can be sure to avoid that, since the objectID
* * will always be unique.
delay seconds have passed.
* * This method provides a convenient alternative for creating and adding a DelayedCall
* * manually.
* *
* * @return Unique numeric identifier for the delayed call. This identifier may be used
* * to remove the object via removeByID().
*
*/
delayCall(call: Function, delay: number, args?: ArrayremoveByID().
*
*/
repeatCall(call: Function, interval: number, repeatCount?: number, args?: Arraytime seconds. Internally,
* * this method uses a tween instance (taken from an object pool) that is added to the
* * juggler right away. This method provides a convenient alternative for creating
* * and adding a tween manually.
* *
* * Fill 'properties' with key-value pairs that describe both the * * tween and the animation target. Here is an example:
* * * *
* * juggler.tween(object, 2.0, {
* * transition: Transitions.EASE_IN_OUT,
* * delay: 20, // -> tween.delay = 20
* * x: 50 // -> tween.animate("x", 50)
* * });
* *
* *
* * To cancel the tween, call 'Juggler.removeTweens' with the same target, or pass * * the returned ID to 'Juggler.removeByID()'.
* * * *Note that some property types may be animated in a special way:
* *color or Color,
* * it will be treated as an unsigned integer with a color value
* * (e.g. 0xff0000 for red). Each color channel will be animated
* * individually.#rgb to the name.#rad, the property is treated as an angle in radians,
* * making sure it always uses the shortest possible arc for the rotation.#deg does the same for angles in degrees.