2011-08-12 3 views
2

Juste pour le plaisir et à des fins d'apprentissage, j'écris actuellement une application de peinture basée sur javascript, mais j'ai rencontré un petit problème avec le code de dessin de la forme ovale .Opera: Problèmes de dessin d'un ovale en JavaScript

Voici mon code, réduit à une simple fonction ovale:

function Oval(context, x, y, radiusX, radiusY, color, filled) { 
 
    if ((radiusX === 0) || (radiusY === 0)) { 
 
    return; 
 
    } 
 
    context.save(); 
 
    context.translate(x, y); 
 
    if (radiusX !== radiusY) { 
 
    context.scale(1, radiusY/radiusX); 
 
    } 
 
    context.beginPath(); 
 
    context.arc(0, 0, radiusX, 0 , 2 * Math.PI); 
 
    context.closePath(); 
 
    context.restore(); 
 
    if (filled === true) { 
 
    context.fillStyle = color; 
 
    context.fill(); 
 
    } else { 
 
    context.strokeStyle = color; 
 
    context.stroke(); 
 
    } 
 
} 
 

 
var ctx = c.getContext("2d"); 
 
Oval(ctx, 150, 150, 100, 149, "#663399", false);
<canvas id="c" width="300" height="300"></canvas>

Cela fonctionne bien dans les versions stables actuelles de Firefox, Chrome, Internet Explorer et Safari. Mais Opera ne semble pas aimer ça. Quel pourrait être le problème?

Répondre

3

C'est parce que Opera exige le dernier argument de arc

changer donc à context.arc(0, 0, radiusX, 0 , 2 * Math.PI, false); et vous serez d'or.

+0

cool, ça marche :) merci :) – terabaud

+0

Wow, Opera vraiment foiré sur celui-là. Je suis sûr que cela a commencé dans Opera 11 parce que mes applications existantes ont cessé de dessiner des cercles récemment. –

1

Nous l'avons corrigé dans un build interne, et devrait bientôt sortir dans une version stable!