Archive for the ‘Новости’ Category
Красота!
Вот сижу любуюсь, сегодня на thefwa.com увидел…
http://instantanes.visitprovence.com
Легкий, отзывчивый интерфейс, все летает. Все сделано тщательно, почти идеально. Сама по себе концепция интерфейса не новая, но дизайн и воплощение великолепны.
Это именно тот случай, когда flash применен по делу.
Трассировка swf в онлайне. О пользе trace в нелегкой жизни разработчика
Подходит к завершению работа над очередным flash проектом. Проект не сверх сложный но и не элементарный. Построено все на шаблоне MVC. Как водится в таких проектах с некоторого момента цепочка вызовов функций становится, мягко говоря, длинной, а соответственно, труднее становится отловить всяческие глюки, типа многократного вызова одной и той же функции.
Учитывая асинхронную природу всего этого хозяйства, ловить ошибки становится еще на порядок сложнее, т.к. вызовы функций происходят в разное время.
Так вот, чтобы находить всякие явные и неявные ошибки, я взял за правило, всюду ставить операторы trace() выводящие нужную информацию в output во flash IDE.
Что это дает? Во-первых можно отследить порядок исполнения функций, кто за кем создается, как объекты взаимодействуют, Во-вторых можно следить за значениями всяких нужных переменных в динамике.
Казалось бы зачем весь этот сыр-бор с трейсом когда есть дебаггер? Дело в том, что дебаг понятное дело не заменишь, но из-за специфики архитектуры приложения дебаггер не всегда ясно дает понять происходящее, задержки между вызовами функций не те, что в реальности, а главное trace дает возможность увидеть наглядно историю вызовов функций и спокойно ее проанализировать.
В определенный момент мне захотелось сделать трассировку прямо на живом удаленном приложении, а не внутри IDE. Поиски привели меня к блогу senocular.com(там еще масса всяких полезных штук), где я нашел замечательный готовый класс, для трассировки сообщений в текстовое поле внутри флешового ролика.
На картинке показан экран трассировки внутри ролики с трейсом моего проекта. Я слегка модифицировал класс добавив скрытие окна по кнопке “Home” и открытие по “End”.
Класс используется как static. Нужно добавить его в addChild( new Output() ); и вместо trace() надо писать Output.trace(). Скачать класс можно здесь: output.rar.
Что нам готовит Flash CS5?
Посмотрел у Ли Бримелоу видео о том, что новенького будет во флеше CS5.
Из запомнившегося:
- Теперь в стандартные библиотеки входит GTween.
- SWFAdress теперь тоже стандартная библиотека и html генерится с ее использованием.
- Появилась целая библиотека заготовок ActionScript кода. При вставке кода можно автоматом цеплять имя инстанса в код.
- Сам код можно редактировать как во флеше, так и во флеш-билдере.
Существенно улучшится работа с текстом. Теперь кроме стандартного текста появился еще один вид текстового объекта в котором можно назначать колонки, а также перетекание текста из фрейма во фрейм. Выглядит все это дело в точности так же как в Индизайне. Собственно про это можно сказать - “Давно уже пора было это сделать!”. Жаль только что этот вид текста пока не будет поддерживается в экшнскрипте.
Появились всякие фенечки типа кистей рисующих паттернами, точная копия арт-браша из иллюстратора. Ну фиг знает… зачем они нужны… Собственно я, например, никогда всерьез не воспринимал флеш как среду для удобного рисования, так, кое-что поправить по мелочи, но создавать там что-то с нуля… увольте, очень уж специфический подход по сравнению с привычным иллюстратором.
Улучшился по мелочи интерфейс, тоже все из разряда “давно пора” - продукт по интерфесу становится все более адобовским и все дальше уходит от сумбура макромедии.
Комментарии закрыты.
Извините, но пришлось отключить комментирование практически во всех записях - спамеры одолели, вернее спамерские комментарии.
Как сделать из говна конфетку? Processing вам в помощь!
Недавно одному из клиентов потребовалось сваять календарь с некими иллюстрациями. При этом бюджет явно не предусматривал покупку нормальных фотоматериалов. Я крепко призадумался, как из найденного в интернете лоурезного говна сделать приличную вещь. И, неожиданно, вспомнил про Processing.
Если кто не в курсе, это такой движок или платформа, предназначенная для создания интерактивных произведений генеративного искусства (generative art). На этой платформе сделано довольно много модных мультимедийных интерактивных проектов. На сайте есть галерея, все подробности там. Да, и он бесплатный, абсолютно.
Так вот, я решил использовать Процессинг с цель получить примерно такой результат как вы видите на картинке - растеризовать изображение с помощью букв. Все осложнялось тем, что такой скрипт еще предстояло создать…
За основу я взял разработку с сайта complexification.net Джареда Тарбелла box fitting (Thank you Jared!). Но я решил модифицировать алгоритм таким образом, чтобы вместо квадратов использовать буквы. По ходу работы пришлось усовершенствовать алгоритм так, чтобы картинка сохраняла узнаваемость. В оригинальном алгоритме берется цвет из случайного места исходного изображения, затем квадрат начинает расти пока не столкнется с другим растущим квадратом, получается красиво, но структура изображения нарушается. Я же сделал так, что буква растет до тех пор пока перепад яркостей или насыщенности или оттенка находится в заданном коридоре, то есть буквенные пиксели сохраняют структуру изображения.
Алгоритм работает достаточно быстро и можно сразу получить готовое изображение в виде Tiff файла, но как всегда есть НО, это маленькое, но противное НО… - дерьмовое качество отрисовки шрифтов в processing. Плюс к тому, выбор гарнитур небогат, можно использовать только несколько true type шрифтов, вся моя коллекция ps и OpenType шрифтов идет по боку… Внутри процессинга есть несколько разных режимов рендеринга, я перепробовал их все, но увы есть некоторые ограничения по их использованию в данном конкретном случае, так что пришлось смириться с имеющимся результатом. Тем не менее, для полиграфии вполне пристойные картинки получаются.
Естественно, я не смог устоять перед искушением портировать эту штуку на флэш. И я сделал это. Пришлось помучаться, решая проблему производительности, но об этом чуть ниже, а сейчас можно поиграться с letter paint:
Число на панели слева внизу - количество использованных символов. После остановки просчета можно увеличивать изображение и таскать его мышью. И да, приложение тормозное, увы.
Что касается производительности, то выяснилась одна неприятная особенность - если делать все как в оригинальном алгоритме, то ждать придется до второго пришествия. В оригинале, в процессинге, можно видеть как буквы “растут”, и сначала я реализовал именно такую версию, но производительность такого алгоритма во флеше была просто ужасающе низка.
В ходе экспериментов я понял, что огромное время отнимает именно процесс вывода полученного результата на экран, все эти подсоединения к дереву display list’а жрут неимоверное количество времени. Как только я вынес весь процесс за скобки, скорость увеличилась невероятно! Я решил, что будет достаточным показывать результат с некоторой периодичностью, чтобы было ясно, что приложение живо. Поэтому в ходе работы все выглядит и ощущается несколько туповато, реакция прямо скажем не реактивная… зато скорость обсчета вполне вменяемая. Собственно целью этого мероприятия было получения картинки в векторной форме, и это удалось!
Скрипт для процессинга можно скачать здесь: LetterProc02.pde


