diff --git a/examples/tweens/chained tweens.php b/examples/tweens/chained tweens.php new file mode 100644 index 000000000..cb77634f5 --- /dev/null +++ b/examples/tweens/chained tweens.php @@ -0,0 +1,44 @@ + + + + + \ No newline at end of file diff --git a/src/tween/Tween.js b/src/tween/Tween.js index 45b29c6ee..e11613774 100644 --- a/src/tween/Tween.js +++ b/src/tween/Tween.js @@ -35,6 +35,7 @@ Phaser.Tween = function (object, game) { this._onCompleteCallback = null; this._pausedTime = 0; + this._parent = null; this.pendingDelete = false; @@ -71,26 +72,39 @@ Phaser.Tween.prototype = { repeat = repeat || 0; yoyo = yoyo || false; - this._repeat = repeat; - this._duration = duration; - this._valuesEnd = properties; + var self; + if (this._parent) + { + self = this._manager.create(this._object); + self._parent = this._parent; + this.chain(self); + } + else + { + self = this; + self._parent = self; + } + + self._repeat = repeat; + self._duration = duration; + self._valuesEnd = properties; if (ease !== null) { - this._easingFunction = ease; + self._easingFunction = ease; } if (delay > 0) { - this._delayTime = delay; + self._delayTime = delay; } - this._yoyo = yoyo; + self._yoyo = yoyo; if (autoStart) { - return this.start(); + return self.start(); } else { - return this; + return self; } }, @@ -192,6 +206,23 @@ Phaser.Tween.prototype = { }, + /** + * Loop a chain of tweens + * + * Usage: + * game.add.tween(p).to({ x: 700 }, 1000, Phaser.Easing.Linear.None, true) + * .to({ y: 300 }, 1000, Phaser.Easing.Linear.None) + * .to({ x: 0 }, 1000, Phaser.Easing.Linear.None) + * .to({ y: 0 }, 1000, Phaser.Easing.Linear.None) + * .loop(); + * + * @return {Tween} Itself. + */ + loop: function() { + if (this._parent) this.chain(this._parent); + return this; + }, + onStartCallback: function ( callback ) { this._onStartCallback = callback;