ГлавнаяПо делу › Класс FontMaestro: Загрузка и применение шрифтов из внешних SWF файлов-библиотек.

Класс FontMaestro: Загрузка и применение шрифтов из внешних SWF файлов-библиотек.

December 10th, 2005

Предисловие

Техника хитра, но в тоже время проста до безобразия. Главное в правельном виде приготовить шрифтовые библиотеки. Уж незнаю что там такого наваял Иван Дембицкий, но моя кухня выглядит таким образом. Как я уже сказал, самое сложное и нудное это приготовить шрифтовые библиотеки. Всем остальным займется класс с пафосным названием FontMaestro.

Подготовка файлов библиотек

1. Создаем новый документ. Называем его например qlasik_lib.fla (что бы было можно понять из названия что файл содержит шрифт Qlassik)
2. Создаем динамическое текстовое html поле. Называем его txt. (если у вас уже установлен Flash8 выберите режим сглаживания Anti-alias for readability)

3. Вставляем в него некий текст на четыре строки и каждую строку форматируем отдельно (nornal, bold, italic, italic-bold)



4. Включаем все используемые символы:



5. Конвертируем (F8  convert to symbol)текстовое поле в movieclip.
6. Заходим внутрь созданого movieclip, добавляем слой и в этом слое пишем такую строчку:

this._parent.font_face = this.txt.getTextFormat(0);

7. Заходим в библиотеку CTRL+L и устанавливаем галки в «Export for runtime sharing» и «Export in first frame». Так же указываем URL для этого самого runtime sharing «qlasik_lib.swf».

8.Сохраняем файл и компилируем SWF.
9. Создаем новый файл. Называем его qlasik.swf
10. С предидущего файла путем CTRL+C CTRL+V переносим созданый нами movieclip в новый документ.
11. Сохраняем файл и компилируем SWF.(В 8м Flash замечен некий баг. Если вставленый movieclip удалить с timeline, то Flash мгновенно вылетает. Возможно это потому что Flash8 пока еще сыроват и это скоро исправят.)

Вот и все. Одна шрифтовая библиотека готова. Если нужно использовать несколько шрифтов, процедуру повторить.

Приложение

Приложение загружает сразу три шрифтовых библиотеки. Как только все три файла загружены, парсится стиль и применяется к текстовому полю. По мере загрузки шрифтовых библиотек (событие onFontLoaded ) слева создаются текстовые поля и стиль применяется обычным TextFormat. (см. код ниже)

Код приложения

this.createEmptyMovieClip("target_mc", this.getNextHighestDepth());
target_mc._x = 50;
//
this.onFontLoaded = function(font_name, actual_font_name) {
        // загружен отдельно взятый фонт
        // в этом примере трейс такой
        //qlasik =  Qlassik Medium
        //vera =  Vera Humana 95
        //yahoo =  Yahoo
        trace("Loaded font:"+font_name+" =  "+actual_font_name);
        var dpth = this.target_mc.getNextHighestDepth();
        var h = this.target_mc._height+20;
        var new_txt = this.target_mc.createTextField('txt'+d, dpth, 0, h, 200, 40);
        new_txt.text = actual_font_name;
        var my_tf = new TextFormat();
        my_tf.align = "left";
        my_tf.size = 30;
        my_tf.color = 0xDA0000;
        FontMaestro.setFont(new_txt, font_name, my_tf);
};
this.onFontProgress = function(total_fonts, fonts_loaded) {
        p_txt.text = ("Fonts loaded: "+fonts_loaded+" of "+total_fonts);
        if (total_fonts == fonts_loaded) {
                var my_css_str = ".red {font-family:qlasik; color: #f80022; font-size:20px; }";
                my_css_str += "p {font-family:vera; color: #000000; font-size: 46px; }";
                my_css_str += "a {font-family:qlasik; color: #3366FF; font-style:italic; text-decoration:underline; font-size: 26px; }";
                my_css_str += ".yaa  {font-family:yahoo; color: #FF0033; font-size: 40px; }";
                var my_css = new TextField.StyleSheet();
                if (my_css.parseCSS(my_css_str)) {
                        trace("parsed successfully");
                        FontMaestro.setCSSFont(ss_txt, my_css);
                        ss_txt.htmlText = "<p>Here we go!</p>";
                        ss_txt.htmlText += "<span class=\"red\">The big brown fox jumpes over the lazy dog.</span><br>";
                        ss_txt.htmlText += "<p><i>Click my</i> <a href=\"#\">link! </a></p>";
                        ss_txt.htmlText += "<span class=\"yaa\">YAHOO! eu :)</span>";
                } else {
                        trace("unable to parse CSS");
                }
        }
};
///
FontMaestro.instance.addListener(this);// подключаем случателя
// загружаем фонты
FontMaestro.loadFont("qlasik.swf", "qlasik");
FontMaestro.loadFont("verahumana95.swf", "vera");
FontMaestro.loadFont("yahoo.swf", "yahoo");
//

Исходные файлы

font_maersto.rar (262 Kb)

Категория: По делу Ярлыки:

Смотрите также

Скриншот флеш клипа нарисованного на основе динамических данных и сохранение картинки в формате PNG на сервер. Тестовые задачи для соискателей на должность Flash разработчика компании Envisionext, Inc.
  1. Пока без комментариев.
  1. Пока нету.