Flash Lite: форматирование HTML-текста

Вкратце
У меня есть флеш-приложение (сделанное для flash lite - ActionScript 2). Когда я загружаю в свое приложение файл XML и обрабатываю его в объекте. Я получаю правильный html-ввод в текстовое поле.
Однако, если я жестко закодирую объект, все html-теги исчезнут из атрибута .htmlText и перед текстом будет помещен код. Я намерен жестко закодировать объект, поскольку загрузка идет намного быстрее, чем xml.

Короче говоря: string.html = true; удаляет все теги span, а они мне нужны. Как мне получить теги диапазона в htmlText моего текстового поля?

ПОДРОБНЕЕ ПОДРОБНЕЕ

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

внутри функции:

//ABOVE I CREATE TEXTFIELD USING THE .CREATETEXTFIELD FUNCTION
this["text" + this._textFieldCounter].html = true;
this["text" + this._textFieldCounter].multiline = true;
this["text" + this._textFieldCounter].wordWrap = true;
this["text" + this._textFieldCounter].autoSize = true;
this["text" + this._textFieldCounter].styleSheet = this._styleSheet;
this["text" + this._textFieldCounter].condenseWhite = true;
this["text" + this._textFieldCounter].htmlText = "<span class=\"page\">" + strHtmlText + "</span>";
//trace(this["text" + this._textFieldCounter].htmlText);

Когда я отслеживаю htmlText, я получаю

<P ALIGN="LEFT">
<FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">
//here comes the strHtmlText
</FONT>
</P>

Flash автоматически помещает эти теги p и font перед моим текстом. Так что моя таблица стилей не будет отображать правильный стиль. Как мне избавиться от начального тега выравнивания и шрифта, но сохранить текстовое поле как html?

ИЗМЕНИТЬ
Установив текстовый формат, я нашел способ обойти эту проблему ... ОДНАКО
у меня возникла новая проблема:
В моем strHtmlText есть span-теги (<span class="text-in">blabla</span>) , но это отфильтровывается. Почему это ? моя таблица стилей ничего не делает без этих стилей.

(текст загружается из массива)


person Jozzeh    schedule 15.12.2010    source источник


Ответы (1)


Это должно иметь какое-то отношение к порядку, в котором вы назначаете свойства TextField. Это должно быть: 1. установить field.html в true, 2. назначить styleSheet, 3. установить htmlText. Таблица стилей должна быть установлена ​​до назначения htmlText - я изначально разместил ссылку на документацию as3, но это верно как для AS2, так и для AS3.

Попробуйте это: поместите TextField на сцену нового AS2 FLA. Установите его тип на динамический. Назовите его "_textField". Установите шрифт Verdana, 16 пикселей, черный. Введите «Ошибка». или что-то подобное в TextField, чтобы в нем был текст. Нажмите «Вставить шрифты», обязательно включите достаточное количество букв, например ascii или Latin-1. На шкале времени введите этот код в первый кадр фильма.

var style:TextField.StyleSheet = new TextField.StyleSheet();
style.parseCSS("p {font-family:Verdana; font-size:12px; color:#FF0000;}");
_textField.html = true;
_textField.styleSheet = style
_textField.htmlText = "<p>This is a test.</p>";
trace (" new text:"+_textField.htmlText);

Теперь, когда вы запустите программу, она должна изменить текст на «Это тест», цвет на красный и размер шрифта на 12 пикселей. Он есть на моем компьютере. Кроме того, на трассировке печатается тот же текст, что и для htmlText.

Теперь вернитесь и поменяйте местами строки, назначающие свойства styleSheet и htmlText. Повторно запустите программу. В нем будут все лишние теги, на которые вы жаловались.

person weltraumpirat    schedule 19.12.2010
comment
Я работаю с AS2 (как определено в тегах) ... однако, если я установил свойство таблицы стилей перед htmlText, это все равно проблема. - person Jozzeh; 20.12.2010
comment
Я отредактировал исходный пост и вместо этого привел пример. Я все еще думаю, что что-то не так с порядком, в котором вы назначаете styleSheet и htmlText. Или, возможно, таблица стилей не инициализирована должным образом. Однако это не ошибка Flash. - person weltraumpirat; 20.12.2010
comment
Я согласен с тем, что ваши аргументы и пример работают. Однако, когда я пробую это в своем приложении, теги span все равно удаляются из строки, если для параметра html установлено значение true. Я бы даже сказал, что все обычные HTML-теги, такие как полужирный и курсив, также удаляются. Остается только флэш-тег font-tag, а двойные br-теги становятся закрытым тегом абзаца. - person Jozzeh; 22.12.2010
comment
Что ж, я уже довольно давно использую промежутки - нет абсолютно никаких причин, по которым они не должны работать. За исключением случаев, когда в вашей программе есть что-то еще не совсем правильное. Я бы посоветовал взглянуть на шрифты и инициализацию таблицы стилей: если Flash не может найти нужные шрифты и / или информацию о стилях, почти всегда ничего не отображается. - person weltraumpirat; 22.12.2010
comment
Привет, это снова я: именно то, что вы описываете, происходит, когда таблица стилей недоступна, или если стили в вашем htmlText отсутствуют, или если шрифты, используемые в этих стилях, не встроены. Не могли бы вы проверить, правильно ли загружена и инициализирована ваша таблица стилей к моменту вызова textField.htmlText? Может быть, просто закодируйте таблицу стилей, как я, чтобы убедиться, что стили доступны. Также проверьте, эквивалентны ли имена шрифтов в таблице стилей экранным именам шрифтов во Flash. Для проверки используйте Font.enumerateFonts (). - person weltraumpirat; 22.12.2010
comment
Большое спасибо! Таблица стилей была «неопределенной». По-прежнему странно, что таблица стилей была определена, когда текст был загружен из xml ... но конечный результат имеет значение. Вы решили мою проблему (хотя вам приходилось ее объяснять несколько раз ;-)). - person Jozzeh; 23.12.2010
comment
Для будущих поколений, почему моя таблица стилей не была загружена: я инициализировал экземпляр мувиклипа (новый мувиклип), затем я поместил таблицу стилей в этот пустой мувиклип и после этого я загрузил существующий мувиклип, используя прикрепленный видеоролик в моем новом мувиклипе - ›потеря таблицы стилей. Возможно, при использовании XML произошла некоторая задержка ... Могу только догадываться. - person Jozzeh; 23.12.2010