基本上,如果我使用stage.onFrame(function(frame){animationLayer.draw()});
,那么我会得到一个不稳定的动画,但是如果我在绘制中执行setInterval(draw, 25);
然后animationLayer.draw();
之类的操作,那么我会得到一个很好的平滑动画。 / p>
我是否在使用KineticJS做错了什么,或者它在性能方面有点糟糕?我只是旋转一个矩形,但看起来很生涩。
它在Chrome中比在firefox中更糟糕但火狐仍然不是很完美。
任何人都有任何想法?
var debug, stage, animationLayer;
var sw, sh;
var spinRect;
var blobArray = [];
window.onload = function() {
debug = document.getElementById('debug');
stage = new Kinetic.Stage({container: "kineticdiv", width: 700, height: 400});
animationLayer = new Kinetic.Layer();
sw = stage.attrs.width;
sh = stage.attrs.height;
spinRect = new Kinetic.Rect({
x: sw/4*3,
y: sh/2,
width: 50,
height: 50,
fill: "#eee",
stroke: "#777",
strokeWidth: 2,
centerOffset: {
x: 25,
y: 25
}
});
var centerRect = new Kinetic.Rect({
x: sw/4-5,
y: sh/2-5,
width: 10,
height: 10,
fill: "cyan",
stroke: "black",
strokeWidth: 2
});
animationLayer.add(spinRect);
animationLayer.add(centerRect);
stage.add(animationLayer);
setInterval(update, 25); // 33 ms = 30 fps, 25 ms = 40 fps
stage.onFrame(function(frame){animationLayer.draw()});
stage.start();
};
function update()
{
spinRect.rotate(0.03); //Math.PI / 100); // even removed this for less calculations
// animationLayer.draw() // smoother if I use this instead
}
由于
编辑:原来Chrome应该归咎于此处的一些问题,最近的更新导致了一些问题。
答案 0 :(得分:3)
v3.9.4将于今天晚些时候发布,它有一些重要的动画和过渡改进。这个动画对你来说顺畅吗?
http://www.html5canvastutorials.com/kineticjs/html5-canvas-kineticjs-animate-position-tutorial/
另外,如果你有很多其他东西在同一时间运行,动画可能会生涩。看看这个使用requestAnimFrame的示例,看看它是否顺利(纯JS,没有库):
http://paulirish.com/2011/requestanimationframe-for-smart-animating/