Flash AS3 - 尝试将当前嵌入的字体更改为另一个,但不显示新字体

时间:2012-05-03 13:43:30

标签: actionscript-3

我已经设计了一个项目并需要重新设计用于其他公司,我无法使用Helvetica Neue更改当前嵌入式字体DIN Next LT Pro

我是flash和AS3的新手,所以真的从头开始学习。说我花了最后一天在谷歌上研究这个问题并尝试了大量的解决方案无济于事。

以下是设置闪光灯的方法。

feedback.fla ,其中嵌入了以下字体:

  • DIN Next LT Pro Bold Condensed
  • DIN Next LT Pro Light Condensed
  • DIN Next LT Pro Regular
  • Helvetica Neue LT Std 45 Light
  • Helvetica Neue LT Std 55 Roman
  • Helvetica Neue LT Std 75 Bold

已安装DIN字体。我通过点击嵌入添加了Helvetica字体,添加了与字体相同但没有空格的字体名称,例如:HelveticaNeueLTStd75Bold。

FeedbackPage.as 似乎指定要使用的字体并将其应用于标记:

public class FeedbackPage extends AbstractPage {
    public static const FONT_BOLD : String = "DIN Next LT Pro Bold Condensed";
    public static const FONT_LIGHT : String = "DIN Next LT Pro Light Condensed";
    public static const FONT_REGULAR : String = "DIN Next LT Pro";
    etc.. etc..

FeedbackPage.as还会导入另一个.as文件:

import dk.electric.synoptik.components.feedbackelements.PercentFeedback;

PercentFeedback.as 此文件创建文本文件并应用字体:

var tfmtPercent : TextFormat = new TextFormat(FeedbackPage.FONT_BOLD, fontSize, 0x0a9fda);
_tfPercent = TextFieldUtils.createTextField(6, yPos, 150, 95, Math.abs(pctDif).toString() + "%", tfmtPercent, false, TextFieldAutoSize.NONE);
_sprContainer.addChild(_tfPercent);

将我的新字体Helvetica Neue LT Std 75 Bold嵌入到fla文件后,我将FeedbackPage.as更改为:

public static const FONT_BOLD : String = "Helvetica Neue LT Std 75 Bold";

导出我的fla,上传并看一看,文字已经消失。我尝试使用你在嵌入时指定的名称(HelveticaNeueLTStd75Bold),但这也不起作用。

任何想法都被我严重困扰了?

TextFieldUtils

package com.madsb.utils {
    import flash.text.TextField;
    import flash.text.TextFormat;

    public class TextFieldUtils {

        public static function createTextField(x : Number = 0,
            y : Number = 0,
            width : Number = 100,
            height : Number = 100,
            text : String = "",
            textFormat : TextFormat = null,
            multilineWordWrap : Boolean = false,
            autoSize : String = "none",
            embedFonts : Boolean = true,
            antiAliasType : String = "advanced",
            selectable : Boolean = false) : TextField {

                var tf : TextField = new TextField();
                tf.x = x;
                tf.y = y;
                tf.width = width;
                tf.height = height;
                tf.embedFonts = embedFonts;
                tf.selectable = selectable;
                tf.multiline = tf.wordWrap = multilineWordWrap;
                tf.autoSize = autoSize;
                tf.antiAliasType = antiAliasType;
                tf.defaultTextFormat = textFormat;
                tf.htmlText = text;

                return tf;
            }

    }
}

1 个答案:

答案 0 :(得分:0)

尝试使用嵌入式字体,将其放入库中(如果他们的计算机上没有安装该字体,人们也可以看到它)并从中创建var。然后将字体设置为该名称(myFormat.font = myFont.fontName;其中myFormat的名称是您的TextFormat,myFont是您的字体的变量名称。部分'fontName'应该像这样保存,而不是字体的名称)

另外,我不确定,但我认为因为“Helvetica Neue LT Std 75 Bold”和“HelveticaNeueLTStd75Bold”不一样(因为有空格),flash可能无法理解你指的是哪种字体