Днями мені стало цікаво, як можна впровадити шрифти за допомогою коду в проекті Flash CS3 (AS3). Я провів за пошуком інформації з даного питання половину дня і до ладу ні до чого не прийшов.
Большенство записів які вдалося знайти радили використовувати конструкцію:
Але поспішаю засмутити тих хто шукав відповідь на питання «Як все-таки може заробити ця конструкція в CS3» - ніяк. На жаль в CS3 є багато речей які зроблені не зовсім зручно для програміста (хоча у Flex реалізована саме така система впровадження, і незрозуміло що заважало її реалізувати в CS3).
Трошки помучившись я знайшов два виходи з ситуації, але все таки уникнути використання IDE нам не вдасться.
Перший крок для обох методів однаковий - в IDE імпортувати необхідний нам шрифт, робиться це таким чином:
В бібліотеці (Library) тиснемо сюди (позначено червоним):
Далі вибираємо в меню пункт «New Font». і у вікні вибираємо необхідний шрифт і його параметри (bold, italic, bitmap, size), в поле Name вписуємо ідентифікатор по якому ми в подальшому ми будемо визначати шрифт.
Натискаємо «OK». В бібліотеці у нас з'явився впроваджений шрифт з ім'ям fontArial.
Далі вибираємо його в списку натискаємо правою кнопкою і в меню вибираємо «Linkage«, в вікні ставимо галочки: Export for ActionScript і якщо необхідно Export in first frame (для екпорту класу на перший кадр, якщо у вас передбачений прелоадер і зроблений він окремо) .
Для того щоб встановити для TextField'a шрифт який ми впровадили можна вдатися до такої конструкції:
Тому я використовую інший спосіб за кількістю коду він перевершує попередній варіант, але на мій погляд набагато зручніше у використанні:
Другий крок (другий спосіб):
Для початку я повинен розповісти вам про функції getDefinitionByName (), на випадок якщо ви не знаєте що вона робить.
Функція getDefinitionByName () перетворює ім'я класу на заслання на клас, тобто використання конструкції:
призводить до того що SpriteClass стає посиланням на клас Sprite і ви можете створювати спрайт використовуючи дане посилання:
І так переходимо до справи.
Щоб організувати для кожного необхідного проекту імпорт шрифтів необхідних тільки даним проектом ми повинні написати абстрактний клас:
Наступним функція loadFont бере посилання на клас необхідного нам шрифту і регістріурет даний шрифт, повертаючи ім'я шрифту (а не лінковки)
І в другій частині кроку ми напишемо свій власний клас для певного проекту:
І тепер все що нам залишається це використовувати при створенні TextFormat'a ім'я шрифту з FontManager'а, наприклад FontManager.fontNameTahoma.