Суббота, 14.06.2025, 18:12
Приветствую Вас Гость | RSS
Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 12
Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0
Форма входа
Главная » 2013 » Январь » 26 » «libcanvas» — фреймворк для работы с javascript canvas, часть
03:30
 

«libcanvas» — фреймворк для работы с javascript canvas, часть


Привет, Хабр! Я хочу рассказать тебе о новой библиотеке, которая помогает очень легко и изящно рисовать всякие штучки-дрючки на html5 canvas. Возможно, ты уже слышал о ней, но сейчас она пережила новое рождение. Что-ж, под катом я покажу тебе много интересненьких примеры, расскажу про нюансы работы и дам ссылку на грозу всех секретарш — почти работающий пасьянс «Косынка», созданную с помощью этой LibCanvas.



Итак, это библиотека действительно пережила второе рождение. Или, может, повзрослела? Чтобы не томить, я сразу перейду к делу, то есть к примерам.

Поведения


Кроме того, о чем я
рассказывал в первой части появилась очень существенная фича — поведения. Они позволяют придать какую-то определенную функциональность вашему объекту. Я приведу примеры некоторых из них. На самом деле их немного больше и один может быть завязан на другом


Эти интерфейсы многие знают по jQuery. Draggable позволяет двигать объекты. Droppable позволяет бросать один объект во второй. В примерах draggable просто двигаем объекты. В примерах droppable бросаем прямоугольник в круг и мимо круга:
Пример draggable
Пример droppable


Привязываем какой-то объект к текущему так, чтобы если мы движем текущим объектом — двигался и привязанный. В примере двигаем кругом — двигаются и квадраты, но не наоборот.
Пример linkable


Перемещаем объект в какую-то точку плавно с заданной скоростью или мгновенно
Пример moveable

и разные другие интерфейсы, как clickable, drawable (основа основ), bindable (еще одна основа основ), etc. Со временем буду наращивать. Например, в ближайших планах — resizable [если придумаю, как ресайзить LibCanvas.Shapes.Polygon(или просто кидать Exception?)]

Что-то более приближенное к жизни



Давайте на том функционале, что есть симитируем среду рабочего стола. Всего 34 строчки кода в App.Start.de() и eсть результат! Конечно, до KDE4 нашей среде еще расти и расти, но надо ведь с чего-то начинать? Как бы её назвать? CDE? Хотя занято, вроде. Ладно, потом придумаю.


А вот и самое интересное. Очень даже играбельное приложение с вменяемым фпсом и кроссбраузерностью (я сказал кроссбраузерностью, про IE там ничего не было!)
Пасьянс «Косынка» во всей красе на html5+javascript+libcanvas. Наслаждайтесь.

Лицензия


LibCanvas — lgpl, исходники в репозитарии на гуглокоде или в архиве
Пасьянс «Косынка» — gpl v3 — в архиве

F.A.Q


1. Mootools — ацтой, испоганили весь libcanvas

Я очень люблю jQuery. Прям души не чаю в нем. Он прекрасен. Изумителен. Но…
Он совершенно не подходит для разработки на canvas. Что есть, что нету. jQuery == DOM
Сначала я делал свой миниатюрный фреймворк для этой библиотеки, но потом осознал, что я изобретаю MooTools. Я успел полюбить этот фреймворк за время работы с ним (а узнал я его после jQuery), и я вам скажу, что он не менее прекрасен! Конечно, для работы с DOM jQuery подходит значительно лучше, но для таких целей, как рисование в канвас без него было бы очень сложно. Каждый класс, каждый метод в LibCanvas просто пропитан мутулзом и без него это все не получилось бы так красиво и изящно

2. Расширение прототипов(особенно массивов) — зло!

Такие слова зло, а расширение прототипов(особенно массивов) — это гениальная идея. Использование for (var i in []) вызовет проблемы в ie даже не с раширенными прототипами, зато с другой стороны это позволяет сделать код очень удобочитаемым и изящным. А для массивов используйте ([]).each();

3. Ну и глючный ваш canvas!

Я считаю, что канвас(как и html5) сейчас переживает период становления. Год-два и он станет настолько же естественным в вебе, как и flash. Google, Opera, Mozilla, Apple — все улучшают канвас с невероятными темпами. Да даже Microsoft пообещали в будущем детище IE9 ввести поддержку этой технологии. Посмотрите, что было полтора года назад(Firefox 3.0, Opera 9.5, Chrome только появился) и что сейчас (Firefox 4, Opera 10.6, Chrome 6) в плане скорости рендеринга. Разница колосальная. Практически с нуля до приемлимого уровня. И еще через полтора года мы увидим потрясающий результат.

4. Ну и глючны вашы (LibCanvas|Примеры|Пасьянс)!

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

5. SVG, RaphaelJS, etc


Будьте оригинальны — не вспоминайте это тут. Если интересна моя позиция — читайте комменты к предыдущему топику и, главное, комментарии в первой ветке этого поста.
Просмотров: 652 | Добавил: dvanded | Рейтинг: 0.0/0
Всего комментариев: 0
Поиск
Календарь
«  Январь 2013  »
Пн Вт Ср Чт Пт Сб Вс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Copyright MyCorp © 2025Создать бесплатный сайт с uCoz