проблемы с переносом текста в as3, firefox, mac

#actionscript-3 #textfield

#actionscript-3 #текстовое поле

Вопрос:

Итак, я создал небольшой сайт для клиента, у которого, похоже, нет никаких проблем для меня. Я публикую его, и мой клиент сообщает мне, что часть текста обрезается в текстовых полях. Я пытаюсь воссоздать проблему на своем ПК с помощью Chrome и Firefox, но все работает нормально. Но он отправляет мне скриншоты со своего Mac с Firefox, и, конечно же, они обрезаются. Он утверждает, что это единственный fire-fox, и это не зависит от размера окна. итак, вот изображения, показывающие, что происходит:

пример проблемы переноса текста

Далее наиболее правильными словами должны быть «Алабама» и «растущий»

и вот код, который создает этот текст ( descTextNew является виновником здесь):

         nameText.text = names[elementNumber];
        nameText.autoSize = "center";
        nameText.x = object.x   (.5 * videoWidth) - (.5 * nameText.width);
        nameText.y = object.y   videoHeight   8;
        nameText.background = true;
        nameText.backgroundColor = 0x000000;
        textStyling.color = 0xFFFFFF;
        textStyling.size = 20;
        textStyling.font = myFont.fontName;
        textStyling.letterSpacing = 3;
        textStyling.align = "center";
        nameText.embedFonts = true;
        nameText.setTextFormat(textStyling);
        container.addChild(nameText);

        descTextNew.text = descArrayContent[elementNumber];
        descTextNew.y = object.y   videoHeight   nameText.textHeight   margin - 15;
        descTextNew.width = nameText.textWidth   30;
        descTextNew.x = object.x   ( (videoWidth - descTextNew.width) / 2 );
        descTextNew.wordWrap = true;
        descTextNew.autoSize = "left";
        descTextNew.background = true;
        descTextNew.backgroundColor = 0x000000;
        descTextStyling.color = 0xFFFFFF;
        descTextStyling.size = Math.round(11 * 1000/stage.stageWidth);
        descTextStyling.font = myFont.fontName;
        descTextStyling.letterSpacing = .5;
        descTextStyling.align = "left";
        descTextNew.setTextFormat(descTextStyling);
        container.addChild(descTextNew);
  

Некоторые из этих переменных объявляются как переменные экземпляра ранее, например:

     var names:Array = new Array();
    var nameText:TextField = new TextField();
    var textStyling:TextFormat = new TextFormat();
    var descTextNew:TextField = new TextField();
    var descTextStyling:TextFormat = new TextFormat();
    var margin:int = 28;
    var videoWidth:int = 267;
    var videoHeight:int = 150;
  

массивы names и descArrayContent к ним добавляются строки «Пол Роллинс-старший» и «Пол Роллинс проводит похороны … » с индексом, определяемым переменной elementNumber . Также object это изображение, которое вы видите на рисунке. не думаю, что нужно показывать вам этот код.

Вот ссылка, если вы хотите увидеть ее в действии:

www.footsoldiers.org/test2/

Есть идеи, что, черт возьми, происходит? Я не знаю, с чего начать.

Ответ №1:

Вы пробовали аннулировать элемент управления для перерисовки вручную?

 this.invalidateDisplayList();
this.invalidateLayering();
this.invalidateLayoutDirection();
this.invalidateProperties();
this.invalidateSize();
  

Ответ №2:

Я бы попытался установить свойство .text после того, как вы установили все остальные свойства. Поэтому попробуйте поместить действие descTextNew.text = descArrayContent[elementNumber] в последнюю строку.

Если это все еще не решает вашу проблему, я бы рекомендовал также включить свойство descTextNew.multiline = true .

Удачи!

Комментарии:

1. Я не думаю, что это требуется, потому что элемент управления должен быть признан недействительным при изменении выравнивания и другого стиля.