Empecé a jugar con el lienzo de HTML5 y esperaba hacer un par de juegos con él. Sin embargo, tan pronto empecé haciendo las coordenadas del ratón a la misma, se muele a un alto cerca de:Redibujar el lienzo de HTML5 increíblemente lento
http://jsfiddle.net/mnpenner/zHpgV/
Todo lo que hice fue hacer 38 líneas y un poco de texto, debe ser capaz de manejar eso, no?
¿Estoy haciendo algo mal? Me gustaría poder renderizar al menos 30 FPS, pero para algo como esto esperaría que sea capaz de dibujar miles de veces.
¿O acabo de utilizar la herramienta incorrecta para el trabajo? ¿WebGL está preparado para la tarea? ¿Por qué sería uno mucho más lento que el otro?
String.prototype.format = function() {
var args = arguments;
return this.replace(/\{(\d+)\}/g, function(m, n) {
return args[n];
});
};
var $canvas = $('#canvas');
var c = $canvas[0].getContext('2d');
var scale = 20;
var xMult = $canvas.width()/scale;
var yMult = $canvas.height()/scale;
var mouseX = 0;
var mouseY = 0;
c.scale(xMult, yMult);
c.lineWidth = 1/scale;
c.font = '1pt Calibri';
function render() {
c.fillStyle = '#dcb25c';
c.fillRect(0, 0, scale, scale);
c.fillStyle = '#544423';
c.lineCap = 'square';
for (var i = 0; i <= 19; ++i) {
var j = 0.5 + i;
c.moveTo(j, 0.5);
c.lineTo(j, 19.5);
c.stroke();
c.moveTo(0.5, j);
c.lineTo(19.5, j);
c.stroke();
}
c.fillStyle = '#ffffff';
c.fillText('{0}, {1}'.format(mouseX, mouseY), 0.5, 1.5);
}
render();
$canvas.mousemove(function(e) {
mouseX = e.clientX;
mouseY = e.clientY;
render();
});
<canvas id="canvas" width="570" height="570"></canvas>
¡No sabía que los caminos funcionaban así! Creo que tener un objeto 'path' hubiera sido más intuitivo. Ahora tiene sentido por qué era tan lento, ¡gracias! – mpen
Ahora hay un objeto de ruta en la especificación HTML5 Canvas y podrá hacer una ruta y llamar 'drawPath' en el futuro. Pero ningún navegador lo ha implementado todavía y pueden pasar meses antes de que puedas utilizarlo. ¡Comprar algún día! –