PDA

Просмотр полной версии : Интересная штука в TextField


Avrilka
16.01.2011, 14:05
Нашел баг TextField.
Оказывается текстовое поле если в него записать
s.text = '\n\n\n'
преобразует '\n' в другой символ перевода строки!

Тоесть у нас коды символов были 13,13,13 а стали 10,10,10. Как узнать как обозначается код 10. Если сделать
trace(String.fromCharCode(10))

то он и выведетпереход на новую строку... как и 13 символ. но у 13 я знаю обозначение '\n' а у 10 не знаю.

Вопрос: как он обозначается?

mooncar
16.01.2011, 15:51
С чего бы это?
Проверьте
s.text = '\n\n\n';
trace(s.text.charCodeAt(0)) //выведет 13

Avrilka
16.01.2011, 16:38
Простите мой французский, я это имел ввиду
s = '\n\n\n'
trace(s.charCodeAt(0))
s1 = _root.createTextField('s1', 1,100,100,100,100);
s1.text = s;
s=s1.text
trace(s.charCodeAt(0))

Трейс
10
13

mooncar
16.01.2011, 17:04
Да, есть нюанс, он известен.

\r\n - последовательность, когда текст начинается с новой строки.
Она эквивалентна CR LF
CR (carriage return — возврат каретки;) + LF (line feed — подача строки)
Однако для флеша символ перевода строки и символ возврата каретки - это одно и тоже, когда задаются в текстовое поле.
var s:String = '\r\n';
trace(s.charCodeAt(0)); //выведет 13 - \r - это символ перевода каретки
trace(s.charCodeAt(1)); //выведет 10 - \n - это символ новой строки

trace('А теперь заносим в поле');

var tf:TextField = _root.createTextField('tf', 1,100,100,100,100);
tf.text = s;
trace(tf.text.charCodeAt(0)); //выведет - \r - 13 - это символ перевода каретки
trace(tf.text.charCodeAt(1)); //опять 13

Поэтому при получении текстов из внешних файлов я обычно вырезаю один символ, иначе появляются лишние пустые строки:
str = str.split('\n').join('');