Почему scaleY = -1 не отражает текст в коде AS3? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь динамически создавать текст в AS3, а затем отражать его.Наиболее очевидный способ, который приходит на ум, - это встроить его в спрайт в виде текстового поля, а затем отразить спрайт следующим образом:

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

Но с этим кодом на экране ничего не появляется.Если я удаляю команду scaleY, то a отображается как обычно.Нужно ли включать какое-либо свойство для текста, которым нужно манипулировать?

1 Ответ

0 голосов
/ 07 февраля 2019

В 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...