Opera: проблемы рисования овала в JavaScript - PullRequest
2 голосов
/ 12 августа 2011

просто для забавы и в целях обучения, в настоящее время я пишу приложение для рисования на основе javascript, но у меня возникла небольшая кросс-браузерная проблема с кодом рисования овальной формы.

Вот мой код, сведенный к простой овальной функции:

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>

Это хорошо работает в текущих стабильных версиях Firefox, Chrome, Internet Explorer и Safari. Но Opera, похоже, это не нравится. В чем может быть проблема?

Ответы [ 2 ]

3 голосов
/ 12 августа 2011

Это потому, что Opera требует последний аргумент arc

Так что измените его на context.arc(0, 0, radiusX, 0 , 2 * Math.PI, false);, и вы получите золотой.

1 голос
/ 22 августа 2011

Мы исправили это во внутренней сборке и скоро выйдем в стабильной версии!

...