Встраивание шрифтов в AS3 - динамическое текстовое поле исчезает - PullRequest
5 голосов
/ 16 ноября 2009

Надеюсь, это новая проблема или просто я упустил что-то очевидное. Пожалуйста помоги! Я встраиваю шрифт в мое приложение AS3. Я делаю все по книге, и это наполовину работает.

В моем основном классе,

    [Embed(source="Art/moolbor.ttf", fontFamily="MoolEmbed", 
        mimeType="application/x-font")]
    var MoolEmbed:Class;

Потом в моем коде:

    var newFormat:TextFormat = new TextFormat();
    newFormat.font = "MoolEmbed";
    newFormat.size = 20;
    newFormat.color = 0xFCF374;

    year.autoSize = TextFieldAutoSize.LEFT;
    year.text = "Hello World";
    year.embedFonts = true;
    year.setTextFormat(newFormat);
    year.antiAliasType = "advanced";

Это прекрасно работает, и текст отображается красиво. Я могу повернуть его, к нему применимы альфы, и это приятно сглаживает. Проблема в том, что текстовое поле динамическое - позже в коде:

    year.text = "And a second hello world";

Как только этот код срабатывает, текстовое поле полностью исчезает. Я включаю

    year.border = true;

и я вижу, что текстовое поле все еще там, но его размер уменьшился до нескольких пикселей. Подумав, может быть, это AutoSize портит,

    //year.autoSize = ...;

Те же проблемы. Думая, что это может быть вложение, я закомментировал строку:

    //year.embedFonts = true;

И текстовое поле возвращается в рабочее состояние, но (по понятным причинам) теряет способность выполнять альфы и вращения.

Есть идеи, что происходит?

Ответы [ 4 ]

13 голосов
/ 17 ноября 2009

Я написал длинную разговорчивую запись о возможных причинах того, почему это не сработает. Но когда я перечитал твой код, я думаю, что заметил ошибку. Изменить строку:

year.setTextFormat(newFormat);

Кому:

year.defaultTextFormat = newFormat;

Это должно сделать это!

3 голосов
/ 23 сентября 2010

, так как defaultTextFormat не работал, комбинация двух других советов работала

import flash.text.Font;

в вашем конструкторе:

Font.registerFont(MoolEmbed)

, а затем

После того, как вы установили свойство text во второй раз, убедитесь, что вы снова вызываете setTextFormat (newFormat).

0 голосов
/ 17 ноября 2009

После того, как вы установите свойство text во второй раз, убедитесь, что вы снова вызываете setTextFormat (newFormat).

0 голосов
/ 16 ноября 2009

вам необходимо зарегистрировать ваш шрифт в глобальном списке шрифтов.

импорт:

import flash.text.Font;

в вашем конструкторе:

Font.registerFont(MoolEmbed)
...