ie до 9 версии не поддерживает canvas вообще. Вам или надо скачать плагин для ie но это все равно, что хром установить ибо все будет на вебките рендериться
либо реализовывать сходный функционал параллельно на VML
Автору спасибо за труд, но думаю стать скорее смутить начинающих. Как вы и заметили в заключении, тут ещё много тонкостей, а небольшое api для отрисовки фигур ничего как таковое не даст. Нужно во первых понимать как работает канва, чтобы грамотно оптимизировать отрисовку, кешировать результаты, сделать чтобы отрисовывались меняющиеся части а не весь холст и тд.
Так что тут для написание постов непочатый край )).
Я думаю, что даже если новички не осилят реализацию и детали, то, как минимум, осилят идею, а это — достаточно важно. Желательно понимать, как оно работает.
> использование map + area
— и ещё area медленее работает, чем вычисление расположения мыши в JS (проверено однажды в проекте с пробками на карте). Поэтому приложения, критичные ко времени, лучше сразу писать в подобной оболочке.
Я думаю, у него есть одно классное преимущество. В Андроиде при клике на элемент будет активироваться не всё поле, а только элемент. Но спасибо за комментарий. Я не тестил, но ожидал, что map+area будет быстрее.
Я понимаю, конечно, что это только примитивный пример, но сходу возник вопрос.
Зачем в Mouse массив elements?
Получается, что каждый новый элемент приходится добавлять в this.elements объекта CF и делать this.mouse.add, чтобы он добавился в this.elements объекта mouse.
Не проще ли из Mouse дергать this.canvas.elements, сделав предварительно в инитиалайзере this.canvas = canvas?
Ну это как бы разделение по ответственностям. В угоду ООП, скажем. Mouse ничего не знает про того, кто её вызвал.
В LibCanvas это разные массивы. Потому что не все объекты, которые отрисовываются слушают мышь и не все объекты, которые слушают мышь — отрисовываются.
Создание фреймворка для Canvas: объекты и мышь