#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
это изображение, которое вы видите на рисунке. не думаю, что нужно показывать вам этот код.
Вот ссылка, если вы хотите увидеть ее в действии:
Есть идеи, что, черт возьми, происходит? Я не знаю, с чего начать.
Ответ №1:
Вы пробовали аннулировать элемент управления для перерисовки вручную?
this.invalidateDisplayList();
this.invalidateLayering();
this.invalidateLayoutDirection();
this.invalidateProperties();
this.invalidateSize();
Ответ №2:
Я бы попытался установить свойство .text после того, как вы установили все остальные свойства. Поэтому попробуйте поместить действие descTextNew.text = descArrayContent[elementNumber] в последнюю строку.
Если это все еще не решает вашу проблему, я бы рекомендовал также включить свойство descTextNew.multiline = true .
Удачи!
Комментарии:
1. Я не думаю, что это требуется, потому что элемент управления должен быть признан недействительным при изменении выравнивания и другого стиля.