Ich arbeite an einem Javascript-Spiel, das die Gravitationskräfte simuliert. Es verwendet das HTML5-Canvas-Element, um 2D-Ellipsen für Planeten zu zeichnen. Ich teste mein Spiel in Google Chrome. Hier ist ein Link zum Spiel: http://gravitygame.hostingsiteforfree.com/index.php?page=playHTMLWarum würde der canvas2d-Kontext keine Ellipsen mehr füllen?
Bis zum 24. Mai funktionierte es gut. Nachdem Chrome jedoch von 26.0.1410.64 auf 27.0.1453.94 aktualisiert wurde, werden die gefüllten Ellipsen manchmal nicht gezeichnet. Es passiert nicht jedes Mal, wenn ich mein Spiel lade, und ich habe es nie kaputt gemacht, während ich lokal lief.
Hier ist ein Screenshot des Spiels arbeiten:
Und hier ist ein Screenshot, dass es nicht das Füllen der Ellipsen zeigt:
Ich kann nicht sagen, was passiert. Ich werde den Teil der Schleife einschließen, der alle Planeten zeichnet. Ich habe es für die Lesbarkeit geändert.
var i = bodies.length;
while(i--){
var I = bodies[i];
var planetRad = (I.width/2)*_scale;
if(_showTrails){
//draw the planet's trail
}
if(//the planet is completely off the screen){
//draw a red planet on the edge of the screen
ctx.beginPath();
ctx.arc(nX, nY, 2.5, 0, TWOPI);
ctx.fillStyle = offScreenColor;
ctx.fill();
ctx.strokeStyle = offScreenOutline;
ctx.stroke();
}
else{
//draw planet
ctx.beginPath();
ctx.arc(nX, nY, (I.width/2)*_scale, 0, TWOPI);
ctx.closePath();
ctx.fillStyle = I.bodyColor;
ctx.fill();
}
if(_showMotionVector){
//draw a line from the center of a planet showing the direction and speed it's travelling
ctx.strokeStyle = motionColor;
ctx.beginPath();
ctx.moveTo(I.getScX(), I.getScY());
ctx.lineTo(I.motion.x * _scale * 12 + I.getScX(), I.motion.y * _scale * 12 + I.getScY());
ctx.stroke();
}
}
Warum würde es plötzlich gelegentlich brechen?
Ich stieß auf ein ähnliches Problem mit IE, also hier ist ein Versuch. Ist es behoben, wenn Sie ctx.closePath() hinzufügen; nach dem ersten Bogen in Ihrem Beispiel Code? – markE
Das hat nicht funktioniert. Ab und zu bin ich immer noch in der Lage, es zu laden, und die Planeten tauchen nicht auf. – Justin
Kann nicht in Chrome oder Canary (+ andere Browser) reproduziert werden (in FF-Panning funktionierte nicht für mich btw). Wie triggern Sie die Animationsschleife? – K3N