added tween.destroy() method + unit tests

This commit is contained in:
Eric Rowell 2013-06-09 00:28:39 -07:00
parent 584eb5eddb
commit 812ea103f2
2 changed files with 56 additions and 0 deletions

View File

@ -78,7 +78,9 @@
this.reset();
};
// start/diff object = attrs.nodeId.tweenId.attr
Kinetic.Tween.attrs = {};
// tweenId = tweens.nodeId.attr
Kinetic.Tween.tweens = {};
Kinetic.Tween.prototype = {
@ -238,7 +240,18 @@
* @memberof Kinetic.Tween.prototype
*/
destroy: function() {
var nodeId = this.node._id,
thisId = this._id,
attrs = Kinetic.Tween.tweens[nodeId],
key;
this.pause();
for (key in attrs) {
delete Kinetic.Tween.tweens[nodeId][key];
}
delete Kinetic.Tween.attrs[nodeId][thisId];
}
};

View File

@ -61,5 +61,48 @@ Test.Modules.TWEEN = {
test(Kinetic.Tween.attrs[circle._id][tween._id].x !== undefined, 'x should not be undefined');
test(Kinetic.Tween.attrs[circle._id][tween._id].y !== undefined, 'y should not be undefined');
},
'tween node': function(containerId) {
var stage = new Kinetic.Stage({
container: containerId,
width: 578,
height: 200
});
var layer = new Kinetic.Layer();
var circle = new Kinetic.Circle({
x: 100,
y: stage.getHeight() / 2,
radius: 70,
fill: 'green',
stroke: 'blue',
strokeWidth: 4
});
layer.add(circle);
stage.add(layer);
var tween = new Kinetic.Tween({
node: circle,
duration: 0.2,
x: 200,
y: 100
}).play();
// start/diff object = attrs.nodeId.tweenId.attr
// tweenId = tweens.nodeId.attr
test(tween._id !== undefined, 'tween.play should return an instance of the tween');
test(Kinetic.Tween.tweens[circle._id].x === tween._id, 'circle should be in the tweens hash');
test(Kinetic.Tween.attrs[circle._id][tween._id] !== undefined, 'tween should be in the attrs hash');
tween.destroy();
test(Kinetic.Tween.tweens[circle._id].x === undefined, 'circle should not be in the tweens hash');
test(Kinetic.Tween.attrs[circle._id][tween._id] === undefined, 'tween should not be in the attrs hash');
}
};