tweaked throttling algo and added unit tests

This commit is contained in:
Eric Rowell
2012-04-28 19:52:45 -07:00
parent ff31dcb0ae
commit ffd9924511
8 changed files with 65 additions and 17 deletions

View File

@@ -44,6 +44,7 @@ Kinetic.Layer.prototype = {
this.lastDrawTime = time;
if(this.drawTimeout !== undefined) {
clearTimeout(this.drawTimeout);
this.drawTimeout = undefined;
}
}
/*
@@ -52,10 +53,15 @@ Kinetic.Layer.prototype = {
*/
else if(this.drawTimeout === undefined) {
var that = this;
/*
* if timeout duration is too short, we will
* get a lot of unecessary layer draws. Make sure
* that the timeout is slightly more than the throttle
* amount
*/
this.drawTimeout = setTimeout(function() {
that.draw();
clearTimeout(that.drawTimeout);
}, 5);
}, throttle + 10);
}
},
/**

View File

@@ -694,12 +694,17 @@ Kinetic.Node.prototype = {
go._addAnimation(anim);
// subscribe to onFinished for first tween
trans.tweens[0].onFinished = function() {
trans.onFinished = function() {
// remove animation
go._removeAnimation(anim);
this.transAnim = undefined;
that.transAnim = undefined;
// callback
if(config.callback !== undefined) {
config.callback();
}
anim.node.draw();
};
// auto start
trans.start();

View File

@@ -28,6 +28,18 @@ Kinetic.Transition = function(node, config) {
}
}
}
var finishedTweens = 0;
var that = this;
for(var n = 0; n < this.tweens.length; n++) {
var tween = this.tweens[n];
tween.onFinished = function() {
finishedTweens++;
if(finishedTweens >= that.tweens.length) {
that.onFinished();
}
};
}
};
/*
* Transition methods
@@ -352,7 +364,7 @@ Kinetic.Tweens = {
return (a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b);
},
'elastic-ease-in-out': function(t, b, c, d, a, p) {
// added s = 0
// added s = 0
var s = 0;
if(t === 0) {
return b;