@crazyjs

Анимация и перемещение объектов в canvas?

Помогите понять пару моментов с canvas:

1. Если объект( точка, например ) отрисована уже на холсте, то с ней ничего сделать нельзя( переместить или изменить цвет) ?
2. Из первого вытекает, что нужно стирать весь холст, в массиве хранить эти объекты и сновать отрисовать?
3. Почему многие не пишут ctx.closePath(); ?
4. Доступа как в SVG к объектам нет, чтоб навесить обработчики событий?
5. Если да, то получается снова надо заносить все объекты в массив и вычислять координаты мыши и т.д.?
  • Вопрос задан
  • 1473 просмотра
Решения вопроса 2
gaussmake
@gaussmake
недорадиолюбитель с плюсами и друпалом
По первому - нет, ничего не сделать.
По второму - если задача - убрать 1 точку, то не лучше ли вернуть прошлое состояние? Касательно методов возвращения :
  • если не потребуется большого числа объектов - сохранить участок изображения в canvas-е до рисования объекта (грубо говоря - если у нас круг (x,y,radius), то имеет смысл сохранить квадрат (x-radius, y-radius, x+ radius, y+radius), при отмене - отрисовать его
  • если потребуется несколько объектов - или занести участки в массив, или сохранить всё изображение

И, наверное, стоит производить изменения в буфере без вывода. Вот только не помню, как это делать, и насколько это повлияет на скорость.
Ответ написан
Keyten
@Keyten
1. Да.
2. Да. Можете посмотреть исходники Graphics2D.js, там реализовано именно это.
3. Пишут, когда нужно закрыть путь.
4. Нет.
5. Да. Но есть хорошая новость, на canvas есть isPointInPath. Опять же, можете посмотреть исходники Graphics2D) Если по ним будут вопросы, обращайтесь в личку на хабре.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы