Mon animation sur toile est lisse comme de la glace en chrome, mais saccadée comme une mauvaise coupe de cheveux dans firefox. La chose la plus étrange est, ce n'est même pas un calcul complexe. Est-ce que quelqu'un voit quelque chose de mal (lié à la performance) avec mon code qui pourrait causer ce ralentissement?Animations saccadées en toile
Ici, il est en jsFiddle: http://jsfiddle.net/Wu5Jh/
Et ici il est pour le SO:
$(document).ready(function(){
//vars
var x = 20,
y = 20,
pi = Math.PI,
width,
height,
complete = 100,
refreshInterval,
ctx;
// computed vars
function init() {
ctx = $('#canvas')[0].getContext("2d");
width = $("#canvas").width();
height = $("#canvas").height();
center = [width/2, height/2];
refreshInterval = (function doSetTimeout(){
draw();
setTimeout(doSetTimeout, 30);
})();
};
function circle(x,y,r) {
// Draw the growing circle
ctx.fillStyle = "#09f";
ctx.beginPath();
ctx.moveTo(x, y); // center of the pie
ctx.arc(
x,
y,
r,
-2*pi*complete/100 + pi*1.5,
-pi*.5,
true
);
ctx.lineTo(x, y);
ctx.closePath();
ctx.fill();
// Draw the cutout
ctx.globalCompositeOperation = "xor";
ctx.fillStyle = "#fff";
ctx.beginPath();
ctx.arc(x,y,r/2,0,pi*2,true);
ctx.fill();
}
function clear() {
ctx.clearRect(0, 0, width, height);
}
function timeCheck(){
if (complete>0){
complete -= 1;
}
else {
clearInterval(refreshInterval);
}
}
function draw() {
clear();
circle(x, y, 20);
timeCheck();
}
init();
});
J'espérais éviter une animation flash ou gif, mais je pourrais avoir pas le choix.
Merci!
me semble bon sur Firefox 3.6.12 – Reigel
Vraiment? Il coupe pour moi à environ 3 points dans 3.6.13, PC – Matrym
Considérons que cela dépend fortement des spécifications de votre ordinateur et de la charge actuelle. – Orbling