Canvas-код не работает в IE9 - возможно, проблема с alpha или globalCompositeOperation - PullRequest
0 голосов
/ 04 июня 2011

У меня есть подпрограмма javascript, предназначенная для мерцания солнечных лучей. Процедура создает лучи 'numRays', затем начинает перезаписывать лучи, используя globalCompositeOperation = 'copy' и рисуя прозрачный луч поверх самого старого луча.

Вы можете посмотреть программу здесь: Sun Ray Page

Код JSFiddle.net, расположенный здесь: JSFiddle Sun Rays (Я не уверен, как заставить его работать на JSFiddle, поэтому, если кто-то сможет исправить мою скрипку, я тоже буду признателен)

(Примечание: я оставил желтый штрих вокруг стертых лучей для диагностических целей, чтобы вы могли видеть их выполненными.)

Код работает в Chrome и Firefox, однако в IE9 исходные лучи не рисуются, когда я оставляю секцию стирания активной. Другими словами, если я выделю секцию, которая создает удар стирания, происходит заполнение лучами. Если я этого не сделаю, то будут выполняться только штрихи стирания.

Я протестировал различные фиксированные альфа-значения, и IE9, похоже, отлично с ними справляется. Я установил в обоих разделах globalCompositeOperation = 'source-over' и до сих пор не получил исходные лучи.

Может кто-нибудь помочь мне исправить этот код для работы в IE9?

Спасибо

1 Ответ

0 голосов
/ 04 июня 2011

Это не работает в jsfiddle, потому что вы никогда не вызываете init()

IE9, вероятно, прерывает выполнение скрипта в строке:

ctx.rotate(rayArray[currentRay]); // Rotate to the rayAngle

Потому что этовыдает ошибку в первые 11 раз, когда она вызывается, потому что вы продолжаете пытаться получить доступ к значению, которое не определено первые 10-11 раз.

Поэтому я переместил ваш инкрементный код вниз после оператора ctx.rotateи добавил иници.У него нет ошибок в IE или FireFox, но у меня нет возможности узнать, что вы хотели:

http://jsfiddle.net/Y5Y48/18/

...