Как я могу предотвратить это произвольное усечение текста в AS3 - PullRequest
0 голосов
/ 28 декабря 2011

Ниже приведен код, который заполняет меню.Кажется, все работает отлично, без ошибок, за исключением одной важной части.Мой массив megaPages имеет значения ["HOME","BABIES","BRIDALS","MISC","WEDDINGS","ABOUT"], но фактический текст, который отображается на экране (который создается megaPages), выглядит следующим образом:

strange menu problems

Как вы можете видетьчасть текста произвольно обрезается.Я проследил текстовые строки, когда они проходили через различные функции на разных этапах построения меню, и они всегда были правы, но почему-то, когда каждый DisplayObject делает это на экране, буквы опускаются (обратите внимание, что «HOME»Абд "О" в порядке).Я даже не знаю, с чего начать с этой проблемой.

    function buildMenu() {
        var itemMCs = new Array();

        for (var i = 0; i < megaPages.length; i++) {
            megaPages[i] = megaPages[i].toUpperCase();
            trace(megaPages[i]); // at each iteration, traces as follows "HOME","BABIES","BRIDALS","MISC","WEDDINGS","ABOUT"
            var textMC = createText(megaPages[i]);

            var itemMC = new MovieClip();
            if (i!=0) {
                var newLink = new PlateLink();
                newLink.y = 0;
                itemMC.addChild(newLink);
            }


            var newPlate = new Plate();
            if (i==0) {
                newPlate.y = 0;
            } else {
                newPlate.y = newLink.height - 2;
            }
            newPlate.x = 0;
            newPlate.width = textMC.width + (plateMargin*2);
            itemMC.addChild(newPlate);

            if (i!=0) {
                newLink.x = (newPlate.width/2) - (newLink.width/2);
            }

            textMC.x = plateMargin;
            textMC.y = newPlate.y + .5;
            itemMC.addChild(textMC);

            itemMCs.push(itemMC);

            itemMC.x = (homeplateref.x + (homeplateref.width/2)) - (itemMC.width/2);
            if (i==0) {
                itemMC.y = homeplateref.y;
            } else {
                itemMC.y = itemMCs[i-1].y + (itemMCs[i-1].height - 6);
            }
            menuRef.addChild(itemMC);

        }

    }

    function createText(menuTitle) {

        trace(menuTitle);

        var textContainer : MovieClip = new MovieClip();

        var myFont = new Font1();

        var backText = instantText(menuTitle, 0x000000);

        backText.x = 1;
        backText.y = 1;

        var frontText = instantText(menuTitle, 0xFFFFFF);

        frontText.x = 0;
        frontText.y = 0;

        textContainer.addChild(backText);
        textContainer.addChild(frontText);
        return textContainer;
    }

    function instantText(textContent, color) {

        trace(textContent); // again, traces the right text each time it is fired

        var myFont = new Font1();
        var myFormat:TextFormat = new TextFormat();
        myFormat.size = 18;
        myFormat.align = TextFormatAlign.CENTER;
        myFormat.font = myFont.fontName;

        var myText:TextField = new TextField();
        myText.defaultTextFormat = myFormat;
        myText.embedFonts = true;
        myText.antiAliasType = AntiAliasType.ADVANCED;
        myText.text = textContent;
        myText.textColor = color;
        myText.autoSize = TextFieldAutoSize.LEFT;           
        trace(myText.text);

        return myText;
    }

1 Ответ

2 голосов
/ 28 декабря 2011

Вам необходимо вставить все необходимые символы для шрифта, который вы используете.

Для текстовых полей, созданных во Flash:
Выберите TextField и нажмите «Вставить»кнопка на панели свойств.

Для динамически создаваемых текстовых полей:
Когда вы устанавливаете шрифт для экспорта (Font1 в вашем случае), убедитесь, что включены все необходимые вам символы,

Вы можете встроить все заглавные буквы или просто ввести те, которые вам нужны для этих конкретных пунктов меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...