Archive for the ‘flash’ 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 станет по-настоящему удобным инструментом для дизайнера, может быть… Я надеюсь.
Совершенству нет предела
И тем не менее, теперь я наконец могу показать демо, которым я по настоящему доволен. По сравнению с этим вариантом, все предыдущие - тухлая, никуда не годная лажа.
Тут многое подправлено и теперь это выглядит вдохновляюще. Вариант все еще сырой. В коде осталось куча всяких хвостов которые надо зачистить.
К счастью, мне удалось разобраться с производительностью и теперь анимация выглядит плавно и красиво. Для усиления эффекта я сделал киношное каше и подправил цвет. В сцене сейчас пять разных вариантов появления букв, они чередуются в произвольном порядке и у некоторых из них меняются параметры в случайном порядке.
Любуйтесь!
Дело было не в бобине… или как заставить плагин 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 превратить в кривые” пока не привели к успеху.
И, на закуску, руссифицированный вариант эксперимента со шрифтами.
прячу это малоудачное гавно под кат, ибо теперь есть вариант поудачнее (см. пост выше)
Font Blender. Превращаем текст в математические кривые.
И, наконец, я сделал то, что хотел - дробление и превращения текста в трехмерные, математические, абстрактные фигуры! Для этого пришлось твинить конечные и контрольные точки отрезков. Фактически для каждого обломка надо одновременно анимировать 6 или 9 параметров, в зависимости от типа отрезка. При этом, конечные точки, куда должен прилететь отрезок, вычисляются по формулам фигур лиссажу, которые продемонстрированы здесь и здесь (есть исходники).