Вставить шрифт в класс ActionScript во Flex - PullRequest
1 голос
/ 30 марта 2011

При создании компонента mxml легко внедрить нужный шрифт следующим образом:

@font-face {
    src: local("Arial");
    fontFamily: ArialEmbedded;
}

В моем коде мне нужно встроить шрифт для компонента, который является частью класса, реализованного в файле * .as. Как я могу это сделать?

С уважением, Рафал

Ответы [ 2 ]

3 голосов
/ 30 марта 2011

Я освещал это несколько недель назад на моем сайте.Здесь слишком много информации для копирования / вставки, поэтому вы можете получить ее по адресу: http://divillysausages.com/blog/as3_font_embedding_masterclass

Также есть код и исходные файлы.Дайте мне знать, если у вас возникнут проблемы.

0 голосов
/ 30 марта 2011

Вот простой пример того, как вы можете встроить шрифт в пользовательский компонент ActionScript:

package
{
import flash.display.DisplayObject;

import mx.core.IUITextField;
import mx.core.UIComponent;
import mx.core.UITextField;

[Style(name="fontFamily", type="String", inherit="yes")]
public class ComponentWithFontEmbedding extends UIComponent
{
    private var label:IUITextField;

    override protected function createChildren():void
    {
        super.createChildren();

        if (!label)
        {
            label = IUITextField(createInFontContext(UITextField));
            label.styleName = this;
            addChild(DisplayObject(label));
            label.text = "Hello";
        }
    }

    override protected function measure():void
    {
        measuredWidth = measuredMinWidth = 100;
        measuredHeight = measuredMinHeight = 50;
    }
}
}

Я упустил реальное измерение для простоты. Таким образом, код довольно прост и использует очень легкий UITextField. Но вы можете использовать Label аналогичным образом, используя стилизацию.

Пример использования следующий:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600" xmlns:local="*">
    <mx:Style>
        @font-face {
            src: local("Arial");
            fontFamily: ArialEmbedded;
        }
    </mx:Style>
    <local:ComponentWithFontEmbedding fontFamily="ArialEmbedded" verticalCenter="0" horizontalCenter="0" />
</mx:Application>

Надеюсь, это поможет.

...