Просмотр полной версии : Интересная штука в TextField
Нашел баг TextField.
Оказывается текстовое поле если в него записать
s.text = '\n\n\n'
преобразует '\n' в другой символ перевода строки!
Тоесть у нас коды символов были 13,13,13 а стали 10,10,10. Как узнать как обозначается код 10. Если сделать
trace(String.fromCharCode(10))
то он и выведетпереход на новую строку... как и 13 символ. но у 13 я знаю обозначение '\n' а у 10 не знаю.
Вопрос: как он обозначается?
С чего бы это?
Проверьте
s.text = '\n\n\n';
trace(s.text.charCodeAt(0)) //выведет 13
Простите мой французский, я это имел ввиду
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
Да, есть нюанс, он известен.
\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('');
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.