Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Использование TextField, XML и \r \n. (http://www.flasher.ru/forum/showthread.php?t=122921)

malwin 21.03.2009 05:23

Использование TextField, XML и \r \n.
 
Проблема такая.
В программе гружу из XML текст и вставляют его в dynamic TextFiled.
Хочу некоторые символы вручную из XML переносить на новую строку, используя специальные символы: \r \n.
Но TextField отображает их как два символа, не распозновая в них специальных символов, и, соответственно, ничего не перенося на новую строку.
Для теста забивал текст в TextField вручную из кода тоже с использованием \r и \n. Все работает!
А из XML не хочет видеть специальных символов :(
Может кто-нибудь помоч?

Alex Lexcuk 21.03.2009 11:08

можно в xml просто ентерев наставить
Код:

var i:int;
var xml:XML =
        <texts>
                <text x="50" y="10" fontSize="20">Это большой текстовый блок</text>
                <text x="50" y="40" fontSize="10">Это текстовый блок поменьше
с переносом строки
с переносом строки
с переносом строки
с переносом строки
с переносом строки
</text>
        </texts>

var reg:RegExp = /\n/gim;

trace(String(xml.text[1]).replace(reg,''));В панеле Output видим

в панеле output будет
Код:

Это текстовый блок поменьше
с переносом строки
с переносом строки
с переносом строки
с переносом строки
с переносом строки

можно и /r использовать
Код:

var i:int;
var xml:XML =
        <texts>
                <text x="50" y="10" fontSize="20">Это большой текстовый блок</text>
                <text x="50" y="40" fontSize="10">Это текстовый блок поменьше/rс переносом строки/rс переносом строки/r
</text>
        </texts>

var reg:RegExp = /\/r/gim;

//trace(String(xml.text[1]).replace(reg,''));В панеле Output видим
trace(String(xml.text[1]).replace(reg,'\n'));//В панеле Output видим

output
Код:

Это текстовый блок поменьше
с переносом строки
с переносом строки


malwin 21.03.2009 21:33

Спасибо!
В XML ентеров наставить - некрасиво.
Использую \r \n и метод replace, как указано в ответе. Все работает.
Но это по сути заглушка выходит.
Очередное доказательство кривости рук разработчиков Flash :(

Котяра 21.03.2009 22:54

причем здесь разработчики? Просто происходит декодирование, то что вы в XML поставили энтер, тот же символ что и \r

malwin 22.03.2009 04:21

В том то и дело, что без дополнительных преобразований(replace) работает только энтер.
Я писал программы на многих языках и с таким количеством недоработок и багов столкнулся только во Flash.

iNils 22.03.2009 05:30

Любой браузер, открыв ваш xml, так же не сделает переносы. Это не баг, это обычный текст. И флеш обрабатывает его как обычный текст, и не понятно с какой стати вы решили, будто он должен делать иначе. Если вы хотите, чтобы флеш обрабатывал эскейп последовательности, то replace вам в руки. В чем проблема? Хочется других поругать?

Котяра 22.03.2009 13:12

Cтавьте CDATA и теги <br> и преобразуйте текст в html , если так уж вам не нравится replace.

alatar 25.03.2009 03:42

можно использовать символ "& # 010;"


Часовой пояс GMT +4, время: 08:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.