PDA

Просмотр полной версии : Лишний перенос строки в тексте из XML


pomuс
23.04.2013, 21:56
Обыскался уже с ответом: не могу понять, почему когда берешь большой текст из xml, в тех местах где идет перенос строки (enteR) в флешке отображается как будто перенос сделали 2 раза.
Если просто задавать текстовое значение через
mytext.text = "lalalala \n lalalala";
то все корректно отображается. Отсюда просится вывод что проблема в xml/ Перерыл гугл в поисках ответа, где пишут что надо прописывать xml.ignoreWhitespace = true; перед загрузкой, где после. Я как только не перепробовал - итог нулевой.

Как же избавится от лишнего переноса?
уже подумал может просто уменьшить расстояние между переносами, но и этого параметра в TextFormat я не нашел

MOHCTEP
23.04.2013, 22:07
\r учитывайте.

chamele0n
23.04.2013, 22:08
так ?

trace( xml.toString().split('\r').join('') );

Sync
23.04.2013, 22:10
а там точно только \n? не \r\n?

pomuс
23.04.2013, 22:20
чего то я ничего не понял...
в as3 для переноса идет \n , в XML чего то подобного нету? То есть надо ввести какое то значение, которое заменять на \n?

chamele0n
23.04.2013, 22:30
яж тебе написал решение
\n - символ переноса строки
\r - это символ возврата каретки

alexcon314
23.04.2013, 22:32
xml - это просто текст. Надо воспользоваться редактором текста, который умеет автоматически подставлять нужный формат окончания строки (нужен Unix-формат, т.е '\n', а не '\r\n'). Например Notepad++ (гугл выдаст). И в нем сохранить/пересохранить/перенабрать xml.
Если редактировать xml нельзя (не ваш он, кто-то другой его пишет), тогда убирать \r вручную перед отображением текста во флеше.

Wolsh
23.04.2013, 22:44
нужен Unix-формат, т.е '\n', а не '\r\n'). Например Notepad++ (гугл выдаст).FlashDevelop не хуже справляется
29445

alexcon314
23.04.2013, 22:48
notepad++ по-легче малость. А так-то да, FD рулит :).

pomuс
23.04.2013, 23:28
Я может быть туплю, но у меня нету ни \n ни \r в xml. Работаю с Notepad++ но если что надо сделать легко редактируемым для других незнающих людей.
chamele0n я сделал как вы писали, безрезультатно

Все, разобрался, спасибо!
Голова уже уже гудит, тяжело доходит

P.S. так все таки есть параметр для определения расстояния по вертикали между абзацами?

Wolsh
24.04.2013, 00:26
так все таки есть параметр для определения расстояния по вертикали между абзацами?
1. Такого понятия и в типографике то нет. Абзац просто с новой строки начинается и никакого особого отступа от предыдущего никогда не делалось — такие неровности в плотности набора убивают глаза. Параграф начинается горизонтальным отступом (1 TAB).
2. У Вас нет никаких параграфов. Перенос строки это не начало нового параграфа. Иначе каждая строка была бы параграфом, и большинство из них начиналось бы с середины слова :)

pomuс
24.04.2013, 16:34
В моем понимании если идет нажатие Enter - то происходит как раз создание нового абзаца. А обычный перенос, который производится переносом предложения

ну вот например я пишу
а тут уже нажал Enter. И иногда красиво бы смотрелось, чтобы расстояние было бы больше, чем в обычном переносе

Wolsh
24.04.2013, 17:15
Еще раз. У Вас на скриншоте простой текст (plain text). У него нет никакого форматирования, соответственно и никакой стиль форматирования привязать не к чему. Текстовое поле, слава создателям, не берет на себя ответственности решать, каким из способов ему обрабатывать символ переноса строки — полуторным отступом по вертикали или табом для first-letter. Оно просто переносит строку.
Так же, как браузер сейчас перенес строку и НИКАК это не обработал, потому что никакого форматирования не назначено.
Я слегка погорячился, сказав что абзацы не могут иметь специальный отступ по вертикали — в современной типографике такое встречается. Однако по канонам книжной типографики это неприемлемо, так как нарушает ритм. К ритму также стремятся и современные веб-дизайнеры, стараясь всегда выравнивать весь текст страницы по сетке (обычно 18 пикселей). Это все к тому, что не надо считать свое представление о "красиво" единственно верным и должным поддерживаться плеером на низком уровне. Если Вам нужно особое форматирование — просто сделайте форматирование. Свобода — это когда Вам ничего не навязывают.

pomuс
24.04.2013, 22:52
да я и не собирался вступать тут в войну по этому вопросу и навязывать то что мне нравится. Что-то вы слишком лично приняли столь малозначительный вопрос

Wolsh
24.04.2013, 23:29
Лично? О, нет. Просто этот вопрос в формате "Как же так? Почему плеер делает вот так, а не так [как мне нужно вот сейчас в этом конкретном проекте]" задается здесь с завидной периодичностью. Все удивляются, отчего их "заставляют" писать лишний код, описывая, на их взгляд, очевидное и естественное поведение. Почему не забить его по-умолчанию? Да потому что оно не очевидно и не естественно. Потому что есть другие способы и варианты. Понятно, о чем война?)) Сегодня Вам хочется вертикальный отступ для новой строки, а завтра Вы будете показывать колонки цифр, или стихотворение. И Вам дают свободу делать так или иначе. Не навязывают единственный способ, да. TextField умеет отображать не только plain text. Если надо — форматируйте (http://help.adobe.com/ru_RU/as3/dev/WS8d7bb3e8da6fb92f-20050207122bd5f80cb-7ff5.html) свой текст тегами HTML и вешайте на них специальные стили CSS. Никто не лишил Вас возможности форматировать текст. Всё в Ваших руках. Но по-умолчанию (свойство .text) это просто текст, а перевод строки это просто перевод строки.