CanvasHomeWork.md 2.9 KB

ООП и Canvas: ДЗ.

click

Сделайте так, что бы рисование происходило не только по движению мыши, но и при первом клике.

updateAll

Создайте функцию updateAll, которая очищает Canvas и в цикле вызывает переданную в качестве параметра функцию-callback, которая делает определенные операции с каждым объектом из массива circles, после чего отрисовывает его используя метод draw. Если параметр не передан, то функция просто очищает канвас и перерисовывает все кружки.

updateAll(function(circle){
    circle.setR(circle.getR() +1);
})

пример выше должен увеличить размер всех кружков на 1. (т. е. заменить текущую реализацию кнопки +)

clear

Сделайте очистку поля рисования. Используйте updateAll.

color

Сделайте выбор цвета. Добавьте методы setColor и getColor в объект Circle.

undo

Сделайте возможность отмены добавления круга. Используйте updateAll

resize

Сделайте возможность изменения диаметра всех кругов с помощью колеса мыши. Используйте updateAll

Синий пояс

Сделайте возможность выбора кругов, над которыми вы производите операции. Для этого нужно:

  • Сделать визуальный переключатель режима рисования или выбора кругов (на ваш выбор)
  • в режиме выбора определять к какому элементу ближе всего произошел клик и добавлять его в специальный массив selected. Показывать пользователю, что элемент выбран, например с помощью штриховой окружности вокруг элемента. Повторный клик отменяет выбор элемента. Модифицируйте draw таким образом
  • все операции проводить над элементами selected, если же он пуст, то над будущими элементами.

Черный пояс.

Сделайте неразрывное рисование кружков. Даже если пользователь двигает мышью быстро, кружки должны отрисовываться неразрывно.