Исполняемые шрифты в Flash Builder 4 - PullRequest
3 голосов
/ 13 августа 2010

Я пытаюсь заставить следующий пример работать в Flash Builder 4:

http://developer.yahoo.com/flash/articles/runtime-fonts-as3.html

Проект Actionscript компилируется, но на экране появляется только маленький повернутый квадрат безтекст в нем.

Кто-нибудь знает, почему это может происходить?Мой код идентичен приведенному выше примеру - я скомпилировал первый класс в _Arial.swf.

Edit

Я также пробовал это:

package {  
    import flash.display.Sprite;  
    import flash.display.Loader;  
    import flash.events.Event;  
    import flash.net.URLRequest;  
    import flash.text.*;  

    public class _Arial extends Sprite {
        [Embed(source='C:/WINDOWS/Fonts/ARIAL.TTF', fontName='_Arial', fontFamily='myFont', mimeType='application/x-font')]  
        public static var _Arial:Class;  

        public function _Arial():void {  
            drawText();
        }

        public function drawText():void {  
            var tf:TextField = new TextField();  
            tf.defaultTextFormat = new TextFormat("_Arial",60,0);
            tf.embedFonts = true;  
            tf.antiAliasType = AntiAliasType.ADVANCED;  
            tf.autoSize = TextFieldAutoSize.LEFT;  
            tf.border = true;  
            tf.text = "Scott was here\nScott was here too\nblah scott...:;*&^% ";  
            tf.rotation =  15;
            addChild(tf);
            trace(Font.enumerateFonts());
        }  
    }
}


var fontList:Array = Font.enumerateFonts(false);
for (var i:uint=0; i<fontList.length; i++) {
    trace("font: "+fontList[i].fontName);
}

трассировка отображает: шрифт: _Arial

Ответы [ 4 ]

4 голосов
/ 14 августа 2010

Хорошо, я получил его на работу ... Я начал с этого

   public class _Arial extends Sprite
{

    [Embed(source='fonts/Arial.ttf', fontName='_Arial',
    mimeType="application/x-font-truetype",
        unicodeRange='U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E',
    embedAsCFF= "false")]
    public static var _Arial:Class; 

}

и, чтобы проверить это, я добавил, что

  public function _Arial():void
  {
    var tf:TextField = new TextField();
    tf.defaultTextFormat = new TextFormat ( "_Arial" , 24 , 0 );
    tf.autoSize = TextFieldAutoSize.LEFT;           
            tf.embedFonts = true;
    tf.text = "This is some text to test!";
    tf.rotation = 20;
    addChild(tf);

  }

Текст действительно отображался, поэтому я избавился от конструктора и снова попробовал пример кода, и он сработал !!!

1 голос
/ 14 августа 2010

У вас проблемы с именами.Класс называется _Arial, но вы присваиваете шрифту тот же самый класс.Это вызывает проблемы для начала.

Во-вторых, чтобы использовать встроенные шрифты, вы просто используете их так:

// embed the font
[Embed(source='C:/WINDOWS/Fonts/ARIAL.TTF', fontName='_Arial', mimeType='application/x-font')]  
public static var ArialFont:Class;


// use the font
var someTextFormat:TextFormat = new TextFormat( '_Arial', 12 );
1 голос
/ 13 августа 2010

Несмотря на то, что ваш шрифт SWF компилируется, вы все равно можете проверить правильность встраивания шрифта, просто добавив текстовое поле в этот класс, используя этот шрифт, убедившись, что для embedFonts установлено значение true, поверните текстовое поле, если хотите, и убедитесьчто текст отображается.Если он не работает на этом уровне, нет необходимости идти дальше ...

После этого этапа код довольно прост, и я не вижу, где он может пойти не так

EDIT

Как уже упоминалось в моем комментарии, я не смог воспроизвести пример кода, я получил тот же результат, что и вы.

Единственный способ заставить его работать, это встраиватьшрифт напрямую, что я часто и делаю.

[Embed(source='fonts/Arial.ttf', fontName='_Arial', 
    mimeType="application/x-font-truetype",
    unicodeRange='U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-   U+0060,U+0061-U+007A,U+007B-U+007E',
    embedAsCFF= "false")]
    public class Main extends Sprite
    {
        public function Main():void
        {
          drawText();
        }
    }

В конце концов я попытаюсь повторить пример кода и скоро вернусь с ответом ...

0 голосов
/ 14 августа 2010

Для вашего оператора вставки в коде выше, мне интересно, пытается ли компилятор искать шрифт относительно вашего исходного пути, а не корня вашей файловой системы. Я бы попробовал скопировать файл шрифта в папку активов в папке src вашего проекта. Затем обратитесь к нему в операторе встраивания как "/assets/ARIAL.TTF". Надеюсь, это поможет.

...