Archive for the ‘Новости’ Category
Точность определения координат в flash
Казалось бы, с координатами во флеше все предельно ясно, тип переменной Number, значит и точность определения координат такая же. Ага… Я тоже так думал до сегодняшнего дня.
Поковырявшись повнимательнее выяснил: точность определения координат во флеше - 0.05.
Оно, конечно, может и не так важно, но я здорово помудохался пока выяснял почему объект с замедлением возвращающийся на заданную позицию, все никак туда окончательно приехать не может, this.x += (this.x - oldX) * 0.2; , казалось бы вот-вот будет this.x == oldX . А вот и хрен! Каждый раз когда x присваивается например 14.87 оно превращается в 14.85 и в какой-то момент замкнутый круг наступает из-за этого округления… Округляет флеш координуту до 0.05, чтоб он был здоров.
Стройка века
Наконец-то я могу похвастаться завершенным коммерческим проектом zoom-mebel.ru. Как говорится мы строили, строили и наконец построили! Это сайт мебельного производителя, изготавливающего компьютерные столы и шкафы-купе.
Изначально предполагалось наполнять сайт моделями достаточно дорогого уровня, поэтому дизайн делался в расчете на более изысканную начинку. Однако кризис несколько откорректировал планы…
Тем не менее, получилось неплохо. Сайт представляет собой монолитное приложение размером 213 Кб. В него подгружаются управляющие xml файлы и картинки. Вся начинка может быть легко изменена, необходимо просто отредактировать xml. Для навигации по кнопкам браузера “вперед-назад” использована библиотека swfAddress. В контекстном меню есть профайлер, так что любопытные могут ознакомится с тем как мое приложение работает с памятью. Неплохо работает, я изрядно потратил времени на устранение утечек памяти.
Вся остальная начинка написана с нуля самостоятельно, включая все скроллбары, кнопки и меню. Во-первых так это весит меньше чем стандартные перескинованные компоненты, во-вторых в ходе написания я детально ознакомился с внутренним устройством этих деталей, эти знания весьма полезны.
Конечно, там есть баги, конечно там есть, что править. Так было и будет всегда, багов не бывает только на пустой странице. Как это обычно бывает, для устранения некоторых неполадок нужно менять архитектуру системы, что делать уже несколько поздно, зато теперь мне известно, чего делать не следует…
Проект этот трудно считать окончательно законченным, в планах стоит еще более детальная проработка навигации. Сейчас кнопки браузера управляют только самой верхним слоем иерархии ссылок - т.е. навигация происходит только по разделам, чтобы идти еще и по ссылкам внутри раздела “Продукция” требуется значительно модифицировать код.
Ну и заключение хочу сказать, что для меня как для дизайнера привыкшего работать в полиграфии, разработка сайта на флеше является наиболее естественным и удобным способом. Вернее так: флеш это наиболее адекватный для этого инструмент с точки зрения точности воплощения замысла.
Да, конечно, есть все эти раздражающие родовые болячки с навигацией, с наличием флеш-плеера нужной версии и т.п. все мы о них знаем. Речь не об этом. Речь о том, что когда я пробую делать страницу в html с помощью CSS я конечно, рано или поздно вымучиваю результат, однако во первых это весьма не интуитивный путь, во-вторых, что самое неприятное, маленькая мелочь внутри css может непредсказуемо нарушать отображение страницы. Даже применение одних и тех же параметров в разном порядке дает совершенно разный результат. Иногда я просто выхожу из себя пытаясь заставить браузер отобразить то что мне нужно.
Вобщем, по степени идиотизма и удобства верстки html напоминает мне попытки верстать тексты в wordе, одни упражнения со вставкой картинок чего стоят - это просто песня. И этот чертов html такой же бестолковый и упрямый. Объекты самостоятельно перескакивают куда им заблагорассудится по каким-то неведомым причинам, нужно изрядное терпение и немалый опыт, чтобы заставить этот бешеный html показывать то что ты хочешь. И ладно бы все это будучи сделано, показывалось во всех браузерах как надо, так ведь куда там… Кругом одни компромиссы, постоянно приходится делать не так как ты хочешь, а как допустимо. Мне это напоминает по ощущениям работу, когда руки у тебя привязаны резиновыми стропами к стулу, ты конечно работаешь, но уйму энергии тратишь на преодоление сопротивления идиотских ограничений, а совсем не туда куда надо.
А во флеше все гораздо более определенно. Во-первых рисуешь руками. Куда поставил объект, там он и будет стоять. Какое поведение задал, так он и будет себя вести. Никакой неведомой мудотни. Конечно, программирование тоже не сахар, но точность воплощения задуманного меня покупает на все 100%.
Жаль, что флеш не мейнстрим, очень жаль. Увы и ах. Html конечно стандарт отрасли, под него все оптимизировано и т.п. кто спорит. Типа как автомобили в советское время - едет и замечательно! А то, что щели и кое-что не работает как надо, так это пустяки. Ишь чего захотели - чтобы дизайн, чтобы удобно! Нехуй тут эстетствовать…
Может быть когда-нибудь этот хренов html станет по-настоящему удобным инструментом для дизайнера, может быть… Я надеюсь.
обновление
Обновил тему оформления блога. По-моему смотрится значительно лучше предыдущего варианта.
…
В августе был так занят текущей работой, что на блог совершенно не оставалось времени.
В ходе одного небольшого проекта пришлось поверхностно ознакомится с Papervision, но применить его не удалось - движок оказался слишком громоздким для имеющейся задачи. Суть проекта состояла в изготовлении скринсейвера на базе flash, содержательная часть которого большой 3D объект собирающийся из более мелких частей с одновременной демонстрацией титров. Число объектов около 300-400, да и сами объекты довольно сложные. Увы, напрямую, задача так и не была решена, сказались технические ограничения заказчика - flash не выше 7 версии. Пришлось ограничится банальной имитацией в 2D - анимация на таймлайне, плоские спрайты летят к уже готовому объекту (да я обломался влезать назад в as2 - в это безумное месиво).
Зато, по ходу пьесы я пощупал руками одну замечательную штуку - quest3D - приложение для создания реалтаймовых 3д презентаций и скринсейверов с поддержкой directX и шейдеров, о чем планирую написать отдельный пост. Это была попытка попробовать другую технологию, гораздо более подходящую для решения данной задачи, но она опять таки не прошла согласование по техническим требованиям у заказчика. Но технология эта оказалась поразительно эффективной и быстрой в освоении, особенно если есть представление об ООП.
Дело было не в бобине… или как заставить плагин FIVe3D_make_typography_v2.0 работать
В своем посте Текст в кривые программно или «Крошим шрифт на кусочки» я жаловался, что у меня не работает плагин FIVe3D_make_typography_v2.0 с помощью которого шрифт преобразуется в AS3 класс.
Оказывается, чтобы плагин FIVe3D_make_typography_v2.0 заработал, его надо класть в папку, где находятся настройки программ - в Windows это:
C:\Documents and Settings\…YourUserNameHere…\Local Settings\Application Data\Adobe\Flash CS4\en\Configuration\WindowSWF
Поскольку эта папка является скрытой, то сначала надо включить показ скрытых папок в свойствах обозревателя.
Кто бы мог подумать! Я совал плагин в папку WindowSWF находящуюся в Program files и уже всю голову сломал пытаясь понять, какого черта он не работает! И ведь в инструкции по установке об этой мелочи ни слова не сказано - поди догадайся. Я узнал о том, как это победить, когда посмотрел урок Building Custom Flash Panels Ли Бримелоу на gotoAndLearn о том, как пишуться плагины к flash IDE.
Что касается получения информации о символах - то все оказалось просто. Плагин FIVe3D_make_typography_v2.0 каждый символ по очереди помещает на сцену - конвертирует в кривые, потом парсит информацию о шейпе, а в итоге в output выдает листинг AS3 класса с описанием шрифта. Все это дело работает благодаря доступу к внутренним функциям Flash IDE, подробнее об этом можно почитать в справочном руководстве к флешу - в разделе Extending Flash. Жаль что этими средствами можно пользоваться только внутри flash IDE. Это я все к тому, что пока мои поиски на тему “можно ли программно device font превратить в кривые” пока не привели к успеху.
И, на закуску, руссифицированный вариант эксперимента со шрифтами.
прячу это малоудачное гавно под кат, ибо теперь есть вариант поудачнее (см. пост выше)
Еще несколько важных фактов о производительности Pixel Blender’а
В блоге Дэвида Ленартса появился интересный тест производительности Пиксел Блендера. В частности интересно, что при работе с фильтами Pixel Blendera:
BitmapData быстрее чем ByteArray а он в свою очередь быстрее, чем Vector.<Number> !
- ShaderJob on BitmapData: 92-99ms
- ShaderJob on ByteArray: 147-172ms
- ShaderJob on Vector.<Number>: 167-192ms
- BitmapData is ~40% быстрее чем ByteArray
- BitmapData is ~47% быстрее чем Vector.<Number>!!
Операторы сравнения дают значительное падение производительности.
В своем тесте Дэвид делает тест, где вычисления не производятся для пикселей с alpha==0. При этом даже если таких пикселей около половины - время вычислений вырастает:
- BitmapData: 134-192ms - ~47% потеря скорости!!!
- ByteArray: 147-172ms - ~22% потеря скорости
- Vector: 192-213ms - ~27%потеря скорости
Не используйте input в качестве output
Лучше иметь два разных BitmapData. Дело в том что Flash player делает временную копию источника, что увеличивает время вычислений фильтра.
- BitmapData: 207-218ms - ~30% потеря скорости
- ByteArray: 256-271ms - ~65% потеря скорости
- Vector: 276-293ms - ~40% потеря скорости
На своем опыте могу сказать, что все эти нюансики складываются иногда в очень неприятные тормоза.