【问题标题】:AS3: Embedding charactersAS3:嵌入字符
【发布时间】:2011-04-12 06:26:40
【问题描述】:

我在 TextFields 和字符嵌入方面遇到了一些问题。据我了解,在 Flash 中嵌入字符的方法是在通过某个类名导出到动作脚本的影片剪辑中拥有一个 TextField。然后让 TextField 嵌入字符。

但是当我尝试在我的项目中使用该 TextField 时,我无法再自动调整该字段的大小!?有没有更好的嵌入字符的方法?还是我错过了一些未知的属性? (是的,我已经尝试过TextField.autoSize = "left" (or "center" or "right"))。

TextField 在 Flash CS4 中的配置如下:
特性: http://screencast.com/t/0VB6KnNO6G
库实现: http://screencast.com/t/w3yQLqit0veI

我像这样嵌入包含 TextField 的 MovieClip:

protected var tabname:MovieClip = new Text(); // The property on the object

添加文本并设置其设置:

var txt:TextField = tabname.txt;

        if( !contains(tabname) )
        {
            addChild(tabname);

            var format:TextFormat = new TextFormat();
                format.bold = true;
                format.font = "Arial";
                format.size = 12;
                format.align = "left";

            var dropShadow = new DropShadowFilter(0);
                dropShadow.color = 0xFFFFFF;
                dropShadow.strength = 2;
                dropShadow.blurX = dropShadow.blurY = 5;
                dropShadow.alpha = .7;

            txt.type = TextFieldType.DYNAMIC;
            txt.multiline = tabname.wordWrap = false;
            txt.autoSize = TextFieldAutoSize.LEFT;
            txt.defaultTextFormat = format;
            txt.filters = [dropShadow];
            txt.mouseEnabled = false;
            txt.x = 10;
        }

        txt.text = value;
        txt.y = Math.ceil((tabmask.height - txt.height) /2);

【问题讨论】:

    标签: actionscript-3 text embedded-fonts


    【解决方案1】:

    要嵌入字体,不要依赖于将它们包装在库中的 MovieClips 中。它们应该作为字体正确嵌入。我在下面包含了一些用于嵌入字体的基本步骤,然后是针对您的特定情况的示例:

    1 - 使文本字段动态并单击嵌入.. 按钮

    2 - 用有意义的东西命名字体(如字体名称)并勾选您将使用的字符集(通常我选择大写字母、小写字母、数字和标点符号)。另请注意,样式为“粗体”,您需要为每种样式嵌入一个字体集。所以如果你想使用Bold和Regular,你需要嵌入2种字体。

    3 - 如果您打算通过 ActionScript 动态添加文本字段,请转到 ActionScript 选项卡并为其添加一个类(同样,使用有意义的名称)

    4 - 最后点击确定,然后离开。我已经设置了一个示例,使用这些步骤和 auto size 方法,您可以看到下面的结果

    【讨论】:

    • 嘿,谢谢。这为我清除了一两件事,但我不确定你是如何在字体上嵌入字符的。我提醒你我正在使用 CS4。
    • CS4 中的文本字段仍然有嵌入按钮,只需单击文本字段然后转到它的属性。希望我的回答对您有所帮助
    • 嗯好的...我刚刚明白,我不需要在影片剪辑中包含文本字段来嵌入字符(而不是字体 - 字符)。但我想事实并非如此?还是什么?
    • 如果你使用上面的步骤,你会没事的。尝试执行上述操作,做一个简单的测试用例,然后开始添加额外的功能
    • 在您的步骤中,您假设我在舞台上有一个文本字段,但我没有。我动态加载它。这就是为什么我将它放在我的电影剪辑库中的原因。
    【解决方案2】:

    在 Flash 中,您可以单击 TextField 的字符属性下方的 [Embed...] 按钮。在随后出现的窗口中,您可以指定要在文本字段中嵌入的字符。

    关于字体嵌入还有很多话要说,但这是一个简单的故事。 Flash CS5 添加了 TLF 文本字段,但我不认为您指的是那些,对吧?

    autoSize 属性确实与字体嵌入无关,但我猜你的 TextField 在不能自动调整大小时不是动态的?

    顺便问一下,您使用的是 CS5 还是 CS4 或更早版本?

    【讨论】:

    • 我正在使用 CS4,但我确实知道从 Flash 嵌入字符的方法。但是在我添加包含文本字段的 Moieclip 后,文本字段不会调整大小。但是 TextField 是动态的。我似乎也无法更改字体粗细……很烦人。
    • 好的,很抱歉误解了您的问题。在您的代码中有一件事让我印象深刻:txt.multiline = tabname.wordWrap = false; 行,因为 wordWrap 不是 MovieClip 的属性,而是 TextField 的属性,因此应该读为txt.wordWrap。另外,在代码中您实际上并没有使用嵌入式字体,对吗?所以整个嵌入的事情可能无关紧要?
    猜你喜欢
    • 2012-10-10
    • 2013-07-17
    • 2011-12-10
    • 2011-11-16
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    相关资源
    最近更新 更多