为什么 scaleY=-1 不反映 AS3 代码中的文本?

Why doesn't scaleY=-1 reflect text in AS3 code?

我正在尝试在 AS3 中动态创建文本,然后反映它。想到的最明显的方法是将其作为文本字段嵌入到 sprite 中,然后按如下方式反映 sprite:

var mySprite = new Sprite();
addChild(mySprite);
charField = new TextField()
charField.text = "a"
mySprite.addChild(charField)
mySprite.scaleY = -1

Bu 使用此代码时屏幕上没有显示任何内容。如果我删除 scaleY 命令,那么 a 将正常显示。我是否需要启用一些 属性 来操纵文本?

在 AS3 中,如果嵌入字体,则不能像这样转换 TextField。顺便说一下,这同样适用于 TextField 的旋转。 简单地将 TextField 的 embedFonts 属性 设置为 true 并不能做到这一点,因为这实际上不会嵌入字体。

试试这个:

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;

    public class Main extends Sprite
    {
        [Embed(systemFont="Arial",fontName="theFont",mimeType="application/x-font",fontWeight="normal",fontStyle="normal",advancedAntiAliasing="true",embedAsCFF="false")]
        private var theEmbeddedFont:Class;

        public function Main():void
        {
            if (stage)
                init();
            else
                addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            var format:TextFormat = new TextFormat();
            format.font = "theFont";
            format.size = 44;

            var mySprite:Sprite = new Sprite();
            addChild(mySprite);
            var charField:TextField = new TextField();
            charField.defaultTextFormat = format;
            charField.embedFonts = true;
            charField.autoSize = TextFieldAutoSize.CENTER;
            charField.wordWrap = false;
            charField.text = "a";
            mySprite.addChild(charField);

            mySprite.x = mySprite.y = 100;
            mySprite.scaleY = -1;
        }
    }
}