Проблема очистки холста.Выберите объекты, не очищаемые в Canvasteroids - PullRequest
1 голос
/ 13 февраля 2011

Я создаю новую игру астероидов с html5 canvas. Дошло до того, что я должен динамически рисовать лазеры на сцене. Они рисуют неправильно (они должны быть длиной всего 10 пикселей), и когда вы стреляете дважды с интервалом в 10 секунд, появляется старый лазерный след. Вот URL, потому что есть больше кода, чем я хочу, чтобы все могли пройти.

http://marccannon.com/canvasteroids/

В идеале лазеры должны иметь длину 10 пикселей и уходить, как только они перестают работать (1 секунда или 33 кадра). Они получают shift() из массива, который больше не должен запускать их в цикле отрисовки. Кажется, что есть класс памяти с классом объектов Laser. До сих пор я часами делал космическое искусство с лазерными следами вместо того, чтобы добавлять настоящие астероиды. Кто-нибудь, пожалуйста, помогите. Я теряю здравомыслие.

Заранее спасибо за помощь.

1 Ответ

5 голосов
/ 13 февраля 2011

Проблема в том, что когда вы рисуете на холсте, вы всегда должны помнить, чтобы вызывать beginPath(), в противном случае все команды moveTo и lineTo будут продолжать добавление и добавление к текущему пути.

...