![]() |
Внедрение Шрифта. Runtime Loading.
Лебенсборн чыхыртма, православные.
Вот еще один базовый нуб-вопрос. Читаю Мука. Пробую реализовать пример из главы Loading Fonts at Runtime. Подход, насколько я понял, там следующий: 1. Создать вспомогательный файл с именем Fonts.fla, докУмент класс которого выглядит, например, так: Код AS3:
Код AS3:
Потом войти в Linkage Properties и поставить галочку Export for Action Script. В результате появится неприятное предупреждение "A definition for this class could not be found in the classpath... ", но мы его тупо за-ОК-йиваем. Ну вот и всё, походу дела. Запускаю RuntimeFont и получаю вот такую ошибку: Код:
TypeError: Error #2007: Parameter font must be non-null.Где прокол? В чем ошибка? P.S. Если запустить отдельно Fonts.fla - то выдается та же ошибка, вероятно трабл в этом файле. Однако там я ничего не менял (кроме более наглядного расположения кода), он взят прямо из книги. Примечание: На всякий случай сообщу, что у меня Adobe Flash CS3 Professional (version 9.0). Впрочем, примеры из книги должны быть универсальны для всех версий, наверное. |
1. тем посвященных ембеду шрифтом на форуме навалом, воспользуйтесь поиском.
2. Цитата:
3. Ошибка у вас валится потому что в загружаемой флешке переменные verdana и verdanaBold приходят null. Почему это интересный вопрос, в первую очередь я бы проверил пути к шрифтам. |
Painkiller,
1. Я поиск юзал немного, но навскидку нужное не нашел. Посмотрю еще конешно... 2. У Мука такой алгоритм. Правда повествование сумбурное какое-то (почему-то именно в этой главе), иногда и не понять, что он советует для Flash IDE а что для Flex, например. Может я чего не разобрал. 3. С путями всё ОК, Windows XP SP3, c:\windows\fonts\verdana.ttf - такой путь и такой файл существуют. Может дело не с путями а с fontFamily? Странный параметер. Вот если например у меня вообще есть левый шрифт, типа Chiller, то как определить его fontFamily, не понятно. |
|
Вложений: 1
Korchy, Спасибо, изучаю...
Но если навскидку оценить, то это весьма неслабо, с точки зрения уровня нуба, конешно. Кто бы мог подумать что нужно столько сторонних извратов, типа super() для EventDispatcher... Хочу пока спросить по поводу другого вашего поста с именем "Встраивание шрифта в Adobe Flash CS". Получилось вот так: 1. Создал такой объект в библиотеке: Вложение 29781 2. Написал такой код в докУмент классе проекта: Код AS3:
Но есть два момента: 1. Размер шрифта какой-то очень маленький... Я специально менял значение 30 на 200 (и в строке кода, и в имени объекта), но как ни странно размер остается точно таким же. Глюк? Или что-то не так... 2. Пробовал вместо BitmapText шрифта создать обычный, галку не ставить. Указал шрифт CyrilicHover и имя вписал: CyrilicHover_name, (размер = 100). В коде прописал его сначала так: Код AS3:
Тогда вписал Код AS3:
Опять что-то странное... Вдруг сейчас на самом деле подхватился системный шрифт, кто его знает, ведь имена то совпадают. |
2 Fogflasher
А у используемых вами шрифтов есть вообще поддержка такого большого размера? Я с большими размерами не экспериментировал, мне хватало 10-12, максимум 14 размеров. |
Korchy,
Я не знаю, а как определить эту поддержку? Я думал что у ttf шрифтов размер какбэ любой может быть. Попробовал немного другой подход: Код AS3:
|
|
Вложений: 2
|
Wolsh, спасибо прочитал.
Пробовал ваш пример (что на второй странице) реализовать в IDE, но не получилось. Видимо Korchy прав, и тэги эмбэдд вообще не воспринимаются Флэшем ИДЭ. Пример от Dimarik слишком абстрактен, нехватает пэкиджей и конструкторов. То что вы в архиве приаттачили очевидно сделано не во флэш... Я подозреваю что вы работаете на Flex или еще чем-то таком, что мне незнкомо. Добавлено через 5 минут Korchy, благодарю за пример. Всё работает. Хотя, в принципе я так всё и делал. Просто я принципиально не указывал строку TFormat.size = 30; Мне казалось, что формат имени Chiller_30pt_st вместе с указанием 30 в форме ввода должно автоматически давать шрифт этого размера. А выходит что нихрена: все три 30-ки должны работать в связке. |
Runtime version
Вложений: 2
Пробую запустить программу Korchy по внедрению шрифтов.
Создал файл Font1.fla, в котором вот такие настройки: PROPERTIES: Вложение 29844 LINKAGE: Вложение 29845 Далее, создал файл класса, который он привел в своем блоге, подставив имена, а также оставив только одну строку с регистерфонт: Код AS3:
Код AS3:
Цитата:
Что не так с этим FontsManagerVn? |
2 Fogflasher
Да, это моя опечатка - это же название собственно класса. Уберите буковки Vn в конце наименования класса в строке dispatchEvent(new Event(FontsManagerVn.FONTS_LOADED)); должно быть так: dispatchEvent(new Event(FontsManager.FONTS_LOADED)); |
Korchy, Спасибо, исправил.
Но появилась теперь другая ошибка: Цитата:
|
2 Fogflasher
> Функция Continue будет вызвана после загрузки swf со шрифтами для продолжения работы программы. Создайте функцию с таким именем, или со своим, и его подставьте в эту строчку. После того, как шрифт будет загружен, будет произведен вызов этой функции. В эту функцию вынесете вот этот кусок Код AS3:
|
А можно как-то на примере это в коде показать?
Вот например я пробую так: Код AS3:
Цитата:
|
2 Fogflasher
Вы прочитали у Мука главу посвященную обработке событий? Функция Continue - обработчик события. Обработчики требуют указания в параметрах события, которое они получают. О чем вам в ошибке впрямую и пишется - функция ожидает 0 параметров, а получает 1. Обозначьте параметр, ответственный за событие: Код AS1/AS2:
|
Korchy, жаль если я раздражаю вас своей тупостью, но да, я ее читал.
Правда скорее в ознакомительном режиме, без закрепления всех деталей и ньюансов, для понимания. Подозрение на аргументы у меня было, но я воспринял смысл ошибки как прямо противоположный: "Ждет 0, имеет 1", как будто бы "некий аргумент уже есть... и то что я его не вижу еще нихрена не означает, мало ли..." А тут всё проще оказалось. Теперь программа работает без ошибок. Значение format1.font трэйсится как CyrillicHover_30pt_st, что очевидно правильно. Однако проблема в том, что фонт почему-то не применяется. Я сначала подумал что код функции Continue имеет ошибки: Код AS3:
Может быть проблема в файле Fonts.fla? Может я чего-то недопонял и какой-то код там должен быть. Добавлено через 22 минуты Блин, всё же очень просто... 'Слона то я и не приметил', забыл строку: Код AS3:
|
| Часовой пояс GMT +4, время: 22:14. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.