![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
Здравствуйте, подскажите алгоритм, если таковой есть, каким образом возможно использовать файл шрифта, находящийся в библиотеке внешнего swf, который подгружается в основной на этапе исполнения.
У Мука есть пример такого использования, но файл, содержащий шрифт создается, насколько я понял в Flex Builder, используя тег Embed. Я попробовал с помощью Flash, но пока что не выходит: файл swf: в библиотеке файл шрифта "MyFont", у этого файла прописан Class в поле Class - "MyFont". поле Base Class пустое Поставлены галочки в полях : Export for ActoionScript Export in frame 1 файл MyFont.as: загрузка файла точно происходит, но текстовое поле остается пустым, если его попытаться форматировать с помощью подгруженного шрифта. |
|
|||||
|
Не определяте класс для шрифта в загружаемой флешке: флеш это сделает сам, укажите только им класса, например "YouFontClassName". не ригистрируйте шрифт в загружаемой флешке.
регистрируйте шрифт в загружающей флешке: import flash.display.*; import flash.events.*; var myFont:Loader = new Loader(); myFont.contentLoaderInfo.addEventListener(Event.COMPLETE, encounterFont); myFont.load(new URLRequest("ComSM.swf")); function encounterFont(ev:Event):void{ var loaderRef:LoaderInfo = ev.target as LoaderInfo; Font.registerFont(loaderRef.applicationDomain.getDefinition("MyFont") as Class); trace(Font.enumerateFonts()[0].fontName);// Comic Sans MS } Последний раз редактировалось alekslitvinenk; 06.06.2009 в 23:43. |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
alekslitvinenk, спасибо, но сорри так не получается ничего, я пока что вот как сделал, я в подгружаемой swf ке назначил документ класс MyFont,
унаследовав его от MovieClip, трейс в основной swf ке видит [object MyFontt] но я так понял что основная проблема в том, embedFonts, почему то убивает текст и он просто перестает изображаться MyFont.as: package{ import flash.text.Font import flash.display.MovieClip public class MyFont extends MovieClip{ public function MyFont(){ Font.registerFont(MyFontt)//название фонта в библиотеке } } } Ешкин, кот, меня уже волосы дыбом - добавил еще и Arial чтоб проверить, тк он ток латинницу отображает, народ хелп, неужели cs4 не работает с embed шрифтами? Последний раз редактировалось AlexDesinger; 06.06.2009 в 22:54. |
|
|||||
|
исправил код выше
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
Спасибо, можно походу и так и так, потому что даже во внешней swf ке - там где встроен файл шрифта создавая тестовое текстовое поле - таже беда - шрифт виден, но как только появляется embedFonts=true, все текст не виден ((((((((((((((((
|
|
|||||
|
исправил код выше...
Цитата:
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
Ну я swf- ке назначил документ класс, в котором и зарегистрировал фонты, но дело не в этом, у вас кажется cs3 судя по интерфейсу, а у меня cs4 тк вот он напроч отказывается форматировать шрифт програмно встроенными шрифтами, даже если я форматирую тектовое поле, которое создается в документ классе swf ки, которая и содержит фонт =(
|
|
|||||
|
вы вормат к тексту когда применяете ?
нужно тогда, когда фонт уже загружен, т.е function encounterFont(ev:Event):void{ var loaderRef:LoaderInfo = ev.target as LoaderInfo; Font.registerFont(loaderRef.applicationDomain.getDefinition("MyFont") as Class); trace(Font.enumerateFonts()[0].fontName);// Comic Sans MS mytxt.setTextFormat(new TextFormat("Comic Sans MS"));//Название шрифта должно совпадать не с названием класса, а с названием шрифта } |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
дк, говорю же, дело в том что форматирование не получается даже если я буду не подгружать фонт, а просто его изначально в библиотеку встрою, в главную swf-ку, даже тогда embedFont убивает текст...
может импорт из библиотеки надо делать? Или экземпляр создавать? Добавлено через 14 часов 52 минуты Мдааа уж - супер, действительно видимо баг, единственный способ, которым получилось встроить внешний шрифт такой- создаю внешний swf с текстфилдом на таймлайне, который лежит за пределами сцены, в нем обязательно должен быть текст, этот текст я отформатировал вручную, и embedom внедрил шрифт в этот текстфилд ( Внимание - все вручную!!!) и все больше ничего не нужно - ни внедрение шрифтов в библиотеку, ни прописание классов, ни регистрация шрифтов кодом. Затем в основном swf загружаю этот файл с текстфилдом, получаю ссылку на фонт текстфилда, сохраняю в public static переменной, и можно ей пользоваться везде - таким только образом получается внедрение шрифта. вот синтаксис подгрузки, кому нужно: var l:Loader=new Loader(); l.contentLoaderInfo.addEventListener(Event.INIT, initL); l.load(new URLRequest("fonts.swf")); function initL(e:Event):void { l.contentLoaderInfo.removeEventListener(Event.INIT, initL) addChild(l) var ff:Object=l.content var tt:TextFormat=new TextFormat() tt=ff.MyTextField.getTextFormat()//TextField добавленный и отформатированный вручную во внешнем swf myFont=tt.font } Последний раз редактировалось AlexDesinger; 07.06.2009 в 15:06. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 51
|
а кто нибудь может подсказать, как удалить динамически загруженный внешний шрифт из библиотеки?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|