2011-01-11 2 views
0

У меня в настоящее время есть две проблемы с Flex 3 htmlText.Flex 3 htmlText вычисляет высоту пути неправильно и полоски теги span

1) Когда я устанавливаю HTMLText моего текста:

myText.htmlText = < HTML текст, хранящийся в моей базе данных MySQL>

Он вычисляет путь высоты неправильно. В большинстве случаев тонна пробелов (или пробелов) добавляется выше и ниже текста. Я не уверен, что произойдет, но он вычисляет значение textHeight выше, чем обычно.

2) Если я установил теги <span> в свой html, он автоматически вычеркивает их (вместо того, чтобы просто игнорировать их). Я использую теги span, чтобы динамически находить определенные фрагменты моего текста. Например:

< промежутка класса = "привет" > Уважаемые, </SPAN > < класса диапазона = "Тег" > [Имя] </SPAN >

вставляется в моей HTMLText, и я использую их для анализа приветствия и метки моих переменных данных.

Кто-нибудь знает какие-либо решения по этим двум вопросам? Любые альтернативные идеи о том, как разобрать куски html? Любой способ улучшить htmlText? Как правильно измерить textHeight и/или удалить дополнение?

Спасибо!

ответ

1

В принципе, тег требует ширины и высоты, явно заданной для того, чтобы flex мог правильно рассчитать высоту этих элементов. Кроме того, вы можете использовать:

invalidateSize(); 
validateSize(); 

Чтобы заставить проверку размера произойти, что порой поможет!

0
  1. Добавьте эти две строки, прежде чем использовать любой XML:

    XML.ignoreWhitespace = true; 
    XML.prettyPrinting = false; 
    

    Это должно заботиться о добавленных строк выше и ниже текста.

    ignoreWhitespace полоски ведущие и конечные пробелы из ваших текстовых узлов.
    prettyPrinting, когда установлено значение true, форматирует вывод XML, отступы и добавляет символы новой строки, чтобы сделать его более читаемым, но также влияя на вывод текста. Например, если у вас есть структура вроде этого:

    <p><span class="test">This is a test.</span></p> 
    

    Вспышка будет:

    <p> 
        <span class="test"> 
         This is a test. 
        </span> 
    </p> 
    

    Это приводит к вашему TextField отображения:

    (newline) 
    (newline) 
    This is a test. 
    (newline) 
    (newline) 
    
  2. Flash-плагин будет удалять любой HTML-теги, если свойство styleSheet установлено неправильно. Поэтому в вашем случае он удалит теги <span> и добавит свои собственные теги <P> и <FONT>, в соответствии с любой информацией о шрифтах, которую вы указали, используя defaultTextFormat или setTextFormat (попробуйте проследить htmlText после того, как вы его установили - вы увидите) , Вы должны установить свойство TextField styleSheet в фактический StyleSheet, если вы хотите сохранить свои собственные теги.

  3. Разбор информации, необходимой с помощью HTML-тегов, является допустимым способом. Обычно я использую нумерованные заполнители, такие как {0} и string.replace(), чтобы вставить динамические значения.

+0

Я не уверен, что понимаю первую часть. Если у меня есть следующий код: if (dataProvider.allowStyles) { mainText.htmlText = dataProvider.defaultText; } Где бы я разместил XML.ignoreWhitespace и другую строку и как они изменили htmlText mainText? Спасибо за совет! – andrewpthorp

+0

Лучше всего поместить их в конструктор вашего основного класса. Они изменяют способ, которым плагин Flash обрабатывает XML-вход: ignoreWhitespace strips, ведущий и хвостовой пробел из текстовых узлов, prettyPrinting автоматически отступает и форматирует XML при преобразовании его в String, что в некоторых случаях фальсифицирует вывод текста. – weltraumpirat

+0

Я отредактировал свой ответ, чтобы прояснить ситуацию. – weltraumpirat