Merge pull request #61 from powerfear/master

make tweens chainable with .to
This commit is contained in:
Richard Davey 2013-09-22 14:13:30 -07:00
commit f66e6326e3
2 changed files with 83 additions and 8 deletions

View file

@ -0,0 +1,44 @@
<?php
$title = "Chained Tweens";
require('../head.php');
?>
<script type="text/javascript">
(function () {
var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update, render: render });
var p;
function preload() {
game.load.image('diamond', 'assets/sprites/diamond.png');
}
function create() {
game.stage.backgroundColor = 0x337799;
p = game.add.sprite(0, 0, 'diamond');
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();
}
function update() {
}
function render() {
}
})();
</script>
<?php
require('../foot.php');
?>

View file

@ -35,6 +35,7 @@ Phaser.Tween = function (object, game) {
this._onCompleteCallback = null; this._onCompleteCallback = null;
this._pausedTime = 0; this._pausedTime = 0;
this._parent = null;
this.pendingDelete = false; this.pendingDelete = false;
@ -71,26 +72,39 @@ Phaser.Tween.prototype = {
repeat = repeat || 0; repeat = repeat || 0;
yoyo = yoyo || false; yoyo = yoyo || false;
this._repeat = repeat; var self;
this._duration = duration; if (this._parent)
this._valuesEnd = properties; {
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) if (ease !== null)
{ {
this._easingFunction = ease; self._easingFunction = ease;
} }
if (delay > 0) if (delay > 0)
{ {
this._delayTime = delay; self._delayTime = delay;
} }
this._yoyo = yoyo; self._yoyo = yoyo;
if (autoStart) { if (autoStart) {
return this.start(); return self.start();
} else { } 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 ) { onStartCallback: function ( callback ) {
this._onStartCallback = callback; this._onStartCallback = callback;