В принципе, если я использую stage.onFrame(function(frame){animationLayer.draw()});
, тогда я получаю отрывистую анимацию, но если я сделаю что-то вроде setInterval(draw, 25);
, а затем animationLayer.draw();
вничью, то получаю приятную плавную анимацию.KineticJS onFrame медленный и рывкий
Я делаю что-то не так с KineticJS или это просто немного сосать на производительность? Я только вращал прямоугольник, но он казался таким отрывистым.
Это хуже в хроме, чем в firefox, но 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
}
Благодаря
Edit: Оказывается, что Chrome виноват некоторые из вопросов здесь, недавнее обновление было вызывает некоторые проблемы.
Эй, хорошо, чтобы услышать 3.9.4 будет позже. Написал этот вопрос, прежде чем рассказывать мне о хроме и т. Д. Первая ссылка не такая гладкая - она немного размыта, когда она движется и немного нервничает. Тем не менее, вторая ссылка совершенно гладкая. Тестирование в Chrome. –