|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2003
Сообщений: 289
|
[flash8] Нюанс по сглаживанию текста
Друзья, вопрос пожалуй прост, но ответа для себя найти не смог
Можно ли сделать, чтобы динамическое текстовое поле со внедренным шрифтом типа bitmap text вело себя при анимации также как статическое текстовое поле с этим же шрифтом? Т.е. в моменты нахождения поля в целочисленных координатах текст отображался без сглаживания, а когда поле в дробных координатах - срабатывало сглаживание. Пример во вложении. |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
На самом деле вопрос не простой.
Легальным способом в IDE этого не добиться (лично я не знаю ). Хотя возможно и есть варианты с всякими фокусами, типа BitmapData, но я расскажу про вариант с редактированием swf. В архиве два swf: bt-original.swf - обычное поведение. bt-hack.swf - поведение как у статичного поля. Как этого добиться? Для начала нужен hex-редактор или хотя бы вьювер. Я пользуюсь Far и плагином к нему "HEX редактор" SWF состоит из блоков тегов с данными, за шрифты отвечают три тега DefineFont, DefineFont2 и DefineFont3. DefineFont - для шрифта который используется только в статичных полях. Если этот же фонт используется и для динамического, то уже нужен тег DefineFont2, а для 8-ки DefineFont3 (у него более точное позиционирование вершин глифа), но оба имеют одинаковую структуру: RECORDHEADER Header UI16 FontID UB[1] FontFlagsHasLayout UB[1] FontFlagsShiftJIS UB[1] FontFlagsSmallText <-то что нам нужно UB[1] FontFlagsANSI UB[1] FontFlagsWideOffsets UB[1] FontFlagsWideCodes UB[1] FontFlagsItalic UB[1] FontFlagsBold UI8 LanguageCode UI8 FontNameLen UI8[FontNameLen] FontName ... и далее А именно с FontName. Если взять любой из swf в аттаче, и посмотреть содержимое в hex виде, то легко можно найти запись "Verdana_14pt_st" (для этого надо отключить галочку Compress Movie в настройках публикации swf, а потом лучше сжать с помощью flasm), это и есть FontName. Перед ним идет байт FontNameLen определяющий число байтов отводимых под FontName. В нашем случаи там стоит 0x10 (то есть в 16 dec, хотя длина строки 15, просто число отводимых байт может быть больше, поэтому после "Verdana_14pt_st" стоит 0x00). Дальше, то есть впереди, байт LanguageCode 0x01. А вот впереди стоящий байт, то, что нам нужно. Каждый бит этого байт - флаг, что видно из таблицы выше. В bt-original.swf там А в bt-hack.swf Флаг FontFlagsSmallText отвечает за то, как будет вести себя вершины глифа в динамическом текстовом поле (в статичном поле вершины отображаются, как есть). Если - 1, то вершины привязываются с размерам пикселя, что и давало - скачкообразное движение. Если - 0, то так же, как и в статичном поле. Поэтому, если надо добиться плавного движения, надо взять 3-ий байт перед именем шрифта, разложить его на биты и заменить третий бит на 0. Последний раз редактировалось iNils; 18.01.2008 в 01:30. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Замучаешься каждый раз при компиляции это ваять
Может быть проще использовать заточенный под флеш пиксельный шрифт и не париться? |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Цитата:
Но еще быстрее, это взять ASV, открыть свою флешку и сформировать из файл ttf с готовым пикслеподобным шрифтом, который сделал флеш при компиляции swf (в примере Verdana_14pt_st). Установить его, и вместо связки Verdana + Bitmap text, выставить Verdana_14pt_st + Anti-alias for animation. |
|
|||||
Регистрация: Nov 2003
Сообщений: 289
|
iNils, __etc, спасибо!
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Цитата:
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Там обычно один размер используется. На то он и пиксельный.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Пиксельные шрифты фиксированного размера. А то, что делает флеш в качестве пиксельного, врядли сойдет.
|
Часовой пояс GMT +4, время: 17:48. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|