Lime.JS
-
Upload
paul-yuriychuck -
Category
Documents
-
view
423 -
download
0
description
Transcript of Lime.JS
![Page 1: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/1.jpg)
LimeJS — фреймворк для разработки HTML5 игр
Юрийчук ПавелCiklum
Проект BoosterMedia
![Page 2: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/2.jpg)
О себе
● Flex/Flash developer, Сasino games framework в 2k-group
● Mobile games developer, Сasual games в Ciklum
● Как найти :● Facebook● Twitter● gmail
![Page 3: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/3.jpg)
Плюшки
● Архитектура● Обьекты на сцене и взаимодействие между
ними● Renderers и как они работают● События● Инструментарий● Кое что еще ;)
![Page 4: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/4.jpg)
LimeJS
● JavaScript framework для разработки кросс-платформенных игр на основе google closures library
● Разработчик — компания DigitalFruit ● Первый публичный коммит в github —
19 января 2011● https://github.com/digitalfruit/limejs● http://www.limejs.com/● API Docs
![Page 5: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/5.jpg)
Архитектура
● Легко расширяемая функциональность● Кросс-платформенность● Отделена отрисовка обьектов● Эффективность работы отрисовщика
![Page 6: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/6.jpg)
![Page 7: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/7.jpg)
Пользовательский интерфейс
● Структура UI отделена от фактического представления, навигация по ней:● AppendChild()● RemoveChild()● RemoveChildAt()● Children_[]/getParent()
● Добавление и удаление слушателей событий:● Goog.events.listen/goog.events.unlisten● AddEventListener/removeEventListener
![Page 8: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/8.jpg)
Отрисовка объектов
● Поддерживаются следующие типы отрисовщиков UI:● DOM = HTML + CSS3● Canvas = все отрисовываем в объектах Сanvas● WebGL - на стадии разработки и не стабилен
● При изменении свойств объекта он помечается как “dirty” что приводит к его перерисовке
![Page 9: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/9.jpg)
Пример: Казаки
![Page 10: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/10.jpg)
Как работает отрисовка
![Page 11: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/11.jpg)
Profit!
● Отрисовывается только то, что было изменено
● Одинаковый подход как для простых так и для сложных обьектов
● Независимость от выбранного отрисовщика
![Page 12: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/12.jpg)
Profit!
● Отрисовывается только то, что было изменено
● Одинаковый подход как для простых так и для сложных обьектов
● Независимость от выбранного отрисовщика
![Page 13: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/13.jpg)
События
● Один и тот же обработчик на много событий сразу ['touchstart','touchend','touchcancel','touchmove']
● По умолчанию this установлен на event.target● При использовании Canvas не надо менять код !
![Page 14: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/14.jpg)
Примеры
● goog.events.listen(heroesContainer,['touchstart','mousedown'],this.handleHeroClick_,false,this)
● heroesContainer.addEventListener('mousedown', this.handleHeroClick_,false,this)
![Page 15: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/15.jpg)
Еще раз о Rendering'e
● Для чего лучше DOM:● Качественный scale и другие транфсормации● IOS - скорость СSS3 трансформаций выше чем js code +
style● Нет ограничений на размер области отрисовки
● Для чего Canvas:● Быстрее scaling, но его качество хуже● Быстрее отрисовка большого множества обьектов● Есть ограниченя на размер области отрисовки
![Page 16: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/16.jpg)
Примеры
● Пользовательский интерфейс лучше рисовать через DOM — почти наверняка будут слайдеры, эффекты
● Отрисовка сцены игры — лучше в Canvas, если вас устраивает скорость
● Canvas — позволяет сделять скриншот на стороне клиента!
![Page 17: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/17.jpg)
Инструменты
● Скрипт lime.py● Init — инициализация фреймворка, скачивает
зависимости● Create — создать новый проект● Update — обновление зависимостей внутри
проекта● Compile — компиляция существующего, можно
создавать динамический прелоадер● Gensoy — внедрение json & css в проект, меньше
файлов
![Page 18: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/18.jpg)
Box2D
● Порт С++ проекта http://box2d.org/ на JavaScript
● Исходники здесь● Интегрирован в LimeJS как third-party library,
скачивается на этапе инициализации● http://sourceforge.net/projects/box2d-js/ 2008
● https://github.com/thinkpixellab/pl/tree/master/src/box2d/collision
![Page 19: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/19.jpg)
Box2D::JS::Features
● C++ полный список здесь● Коллизии и контакт объектов● Системы частиц● Моделирование механики в играх
![Page 20: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/20.jpg)
Google closures library
● Автоматизированное управление завимостями
● XML — XPath, AJAX — xhrIo, JSON — native / json parser
● DataStructures● Array, Vector, Size, Coordinate
● Map, AVL-tree, Pool, Queue, Heap, Collection
● Templates
● Storage
● Cryptogrpahy
● Graphics
● i18n - internationalization
![Page 21: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/21.jpg)
Что надо будет добавлять самому
● Загрузка ресурсов и их обработка● Обработку Spritesheet если у вас не
поддерживаемый генератор● Навигация а-ля getChildById/getElementById
и прочее● Компонент lime.ui.Scroller, lime.Layer и lime.Label— подлежат доработке напильником
● Звук для iOS — таблетка тут
![Page 22: Lime.JS](https://reader034.fdocuments.net/reader034/viewer/2022051818/54943ae6b47959474d8b4a61/html5/thumbnails/22.jpg)