четверг, марта 11, 2010

Выбираем листалку страниц для Flex-проекта

С тех пор, как впервые мы увидели этот культовый гаджет PageFlip, созданный еще для 6й версии (а может и еще ранней) FP, немало воды утекло. Кстати, здесь есть ссылка на исходник на одну из старых версий.

Сейчас открылось множество сервисов для онлайн-публикации книг и журналов, в которых книги листаются именно по принципу PageFlip. Тема действительно популярная и по ней существует приличное количество наработок. Причем, в подавляющем большинстве, это некие готовые flash-движки, при помощи которых можно создавать книги вообще без участия flash-разработчика - одним лишь конфигурированием.
Нас интересуют наработки с открытым исходным кодом и желательно для Flex.

Итак, начинаем поиски.
  • Многие ссылки ведут сюда: http://www.quietlyscheming.com/blog/components/flexbook/.
    Движок FlexBook явно не нов - март 2007, хотя последний коммент в блоге датируется 2009м годом.
    Демка показывает возможности движка, а в контекстном меню flash есть ссылка на архив с исходным кодом.
    Исходный код поставляется в виде Flex-проекта, однако при импорте, FlexBuilder предупреждает о том, что версия SDK в проекте указана старая, а так же о том, что есть устаревшие свойства flex-компонентов. Кроме того, в настройках есть ссылка на не существующую библиотеку, но это лечится путем удаления некорректной строки из свойств проекта.
    Код компилируется и работает превосходно.
  • Следующий претендент: http://www.rubenswieringa.com/blog/flex-book-component-beta.
    Называется так же - FlexBook. И так же не свеж - июль 2007, зато комменты датируются мартом 2010, то есть актуальность на лицо.
    Демка так же вполне адекватная и в контекстном меню тоже есть ссылка на исходный код.
    Создаем новый Flex-проект, копируем туда код, указываем что компилить и запускаем. Никаких проблем, получаем работающую книгу. Выглядит привлекательнее предыдущего решения.
  • Коммерческая разработка: FlashPageFlip. Есть бесплатная версия - Free FlashPageFlip. Скачиваем бесплатную версию.
    Бесплатная версия не предоставляет исходников. Зато здесь есть всё, чтобы сделать книгу из заготовок. Рассчитан на 8ю версию FP.
  • Расширение Flash CS - PageTurn3D CS: здесь. Не стал ставить, хотя демка выглядит симпатично.
  • OpenSource движок MegaZine3: http://megazine.mightypirates.de/. Судя по описаниям, и демке, достаточно мощный движок. Есть доступ к SVN, есть довольно обширный API.
    Общее впечатление от демки (которую можно только скачать как Zip) безусловно очень положительное. Сам по себе скачиваемый продукт не является библиотекой. Это готовое решение, глубоко конфигурируемое, способное отображать разнообразный контент пользователя.
    Предлагается скачать SWC, но ссылка некорректная. Исходники можно скачать с SVN. Имеется форум с достаточно оживленными обсуждениями.
    В общем, при желании, можно разобраться с этой системой, хотя она, как большинство openSource-проектов, выглядит как темный лес. К тому же не предоставляется примеров использования API. Но это уже тема для отдельной статьи.
Наткнулся на пост, в котором есть небольшой обзор листалок. Ничего особенного, зато дает общее представление о коммерческих продуктах.

Итак, моя задача состоит в интеграции листалки во Flex-проект. Соответственно есть два пути:
  1. Непосредственно использовать библиотеку классов
  2. Интегрировать готовое решение путем внедрения главного SWF-файла во Flex-приложение и каким-то косвенным путем управлять контентом страниц.
Я рассматриваю первый вариант и выбираю движок FlexBook от Ruben Swieringa. Всё. Буду докладывать с места событий.

5 комментариев:

Ivan D. комментирует...

Как ни странно я тоже выбрал в свое время FlexBook от Ruben Swieringa. И даже легко перенес под Flex 4. Единственная проблема, с которой я столкнулся - с увеличением страниц (больше 15-20) приложение начинает подтормаживать, а на 120 страниц вообще нельзя было работать, пришлось разбить приложение на книги по 20 страниц и показывать через (includeIn). Есть широкое поле для оптимизации, но никак не доходят руки.

Racer комментирует...

Спасибо за информацию! Я сейчас начал углубляться и мне всё больше нравится этот движок. У меня не планируется большое количество страниц и я как раз уложусь в 15-20.
Конечно, при большом количестве страниц будут тормоза - как я понял, система не предусматривает динамической подгрузки/выгрузки страниц. Может быть, если сделать ручками выгрузку ненужных страниц и держать буфер из 10-15 страниц то проблема решится?

Ivan D. комментирует...

Да - буфер поможет. Проблема (по тестам) в прорисовке тени для каждой страницы. Выход - рисовать только те страницы, которые участвуют в прорисовке (это вообще по хорошему), ну и буфер тоже будет решением, кстати это должен быть простой вариант. А движок и вправду хороший.

elmortem комментирует...

FlexBook от Ruben Swieringa решает. Особенно если его основательно напильником доработать. Сделать подгружаемые страницы, гламурное отражение книги, удобное меню навигации, зуминг страниц, скейлинг. Выглядит на порядок вкуснее. Хотя повозится пришлось основательно... (:

Игорь комментирует...

Сейчас приходится возиться с листалкой. Может не стоит изобретать велосипед заново, кто нибудь может поделиться доработанной версией?