Динамически переворачивать свойство переноса слов в текстовом поле TLF

Я использую Flash CS5 и ActionScript 3.

Мне нужно динамически (в ответ на событие) перевернуть свойство wordWrap TLFTextField с true на false и наоборот. У меня он работал со старым классом TextField, но я не могу заставить его работать с TLF.

Я объявляю свое поле и настраиваю его так, со значением true для wordWrap:

this.field = new TLFTextField;
field.multiline = true;
field.wordWrap = true;
field.autoSize = TextFieldAutoSize.LEFT;

field.tlfMarkup = my_content;

this.addChild(field);
var myTextFlow:TextFlow = field.textFlow;
myTextFlow.hostFormat = format; //format is a TextLayoutFormat declared earlier
myTextFlow.flowComposer.updateAllControllers();

Чтобы изменить перенос слов, я пробовал следующее:

field.wordWrap = false;
field.multiline = false;
var myTextFlow:TextFlow = field.textFlow;
myTextFlow.flowComposer.updateAllControllers();

Но это не дает никакого эффекта - текст остается обернутым. Кто-нибудь может сказать мне, что мне не хватает?

Заранее спасибо,

Аманда


person Amanda_A    schedule 17.03.2011    source источник


Ответы (2)


чтобы изменить перенос слов на false, должен быть установлен текст. (мне потребовалось около получаса, чтобы он заработал!)

field.wordWrap = false;
trace(field.wordWrap); // will echo true

это должно работать:

if(field.text == ""){

  field.text = "a";
  field.wordWrap = false;
  field.text = "";

} else {

  field.wordWrap = false;

}

trace(field.wordWrap); // should echo false
person f1r3Ph03n1xX    schedule 12.08.2011
comment
Тебе повезло - последние 5 часов я бился головой об стену над этим. Однако это не совсем работает так, как вы описали в своем ответе: Каждый раз вы устанавливаете свойства text или htmlText, значение сбрасывается на true, поэтому единственный способ установить wordWrap на false - после установки текста, который вы действительно хотите, чтобы поле содержало. Это настолько отстой, что трудно найти слова, чтобы описать это ... но опять же, TLFTextField в любом случае ужасный отстой. - person weltraumpirat; 22.10.2012

Во-первых, пробовали ли вы: this.field = new TLFTextField();

У вас не было скобок.

По крайней мере, стоит взглянуть. (Также я считаю, что в настоящее время это бета-версия, поэтому есть вероятность ошибки?)

Наконец, вы можете рассмотреть возможность тестирования без AutoSize ... иногда вызывает проблемы.

Извините, что я не могу быть более полезным с точным решением.

person kachingy123    schedule 17.03.2011
comment
Спасибо, что поймал недостающую скобку - не знаю, как мне удалось их забыть! Я просто попробовал еще раз с круглыми скобками, и ничего не изменилось. К сожалению, мне нужен AutoSize.LEFT, но я попытался его закомментировать, и перенос слов по-прежнему не меняется. Я постараюсь опубликовать это как возможную ошибку в Adobe, если никто не сможет это выяснить. - person Amanda_A; 19.03.2011