PDA

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


codfelix
26.09.2009, 02:34
TextField почему-то добавляет(отображает) пустую строчку,
хотя если открыть файл, то пустой строчки нет?
(с исп. css, и без css - тоже самое)

Файл sample.html выглядит(сохранен)

так
Добрый день
Виктор Андреевич

А загружается так
Добрый день

Виктор Андреевич

Почему доб. пустая строка?

Код загрузки as 2.0
var myStyle:TextField.StyleSheet = new TextField.StyleSheet();
myStyle.load("sample.css");
content_txt.styleSheet = myStyle;

content_txt.multiline= true;
content_txt.wordWrap = true;
content_txt.html = true;

var story:XML = new XML();
story.ignoreWhite = true;
story.load("sample.html");
story.onLoad = function () {
content_txt.htmlText = story;
}

iNils
26.09.2009, 02:38
content_txt.htmlText = story.split('\r').join('');

codfelix
26.09.2009, 03:02
Выдает ошибку
(простите, если что не так)

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 14: There is no method with the name 'split'.
content_txt.htmlText = story.split('\r').join('');

Total ActionScript Errors: 1 Reported Errors: 1

var myStyle:TextField.StyleSheet = new TextField.StyleSheet();
myStyle.load("sample.css");
content_txt.styleSheet = myStyle;

content_txt.multiline= true;
content_txt.wordWrap = true;
content_txt.html = true;

var story:XML = new XML();
story.ignoreWhite = true;
unique=new Date().getTime()
story.load("file.html?unique=" +unique);
story.onLoad = function () {
content_txt.htmlText = story.split('\r').join('');
}

mooncar
26.09.2009, 11:21
Конструкцию split - join применяют для убирания лишнего спецсимовла \r (перевод каретки) и применяют к строковым данным. Поопробуйте так:
content_txt.htmlText = story.toString().split('\r').join('');


Добавлено через 9 минут
Я с XML не знаком, пользуюсь для получения данных из html обычным LoadVars. Вопрос - а что, чтобы строку из файла XML получить, вот прямо так можно приравнять экземпляр XML (story) значению текста текстового поля?

getelse
26.09.2009, 11:59
А если загрузка ч/з LoadVars, как добавить сюда этот код?

код
content_txt.htmlText = story.toString().split('\r').join('');

сюда
var tom:LoadVars = new LoadVars();
tom.onData = function(src:String) {
if (src != undefined) {
txt.text = src;
}
};
tom.load("green.html");

Fatality
26.09.2009, 12:42
var tom:LoadVars = new LoadVars();
tom.onData = function(src:String) {
if (src != undefined) {
txt.htmlText = str.split('\r').join('');
}
};
tom.load("green.html");

getelse
26.09.2009, 12:48
Спасибо mooncar & Fatality

codfelix
26.09.2009, 13:26
Подскажите
Если файл(sample.html),
такой
<b>Привет</b>
<b>Выстникам</b>

то почему в flash TextField теряется enter?
вот
ПриветВыстникам

mooncar
26.09.2009, 18:01
Ну теперь попробуйте убрать split('\r').join('');
Просто обычно в самом текстовом файле есть два спецсимвола - \r и \n - возврат каретки и новая строка. Например, Блокнот понимает и отображает все верно, а флеш при выводе в текстовое поле считает каждый из них за новую строку, поэтому нужно один убирать обычно, через split - join.
Почему у вас сейчас после убирания \r убрались и переводы каретки и символы новой с троки, я не могу сказать. Поэкспериментируйте.

Добавлено через 43 минуты
Погодите-ка, у вас вот тут:
<b>Привет</b>
<b>Выстникам</b>
по всем законам жанра HTML не должно быть никаких новых строк.
Все правильно, получится одна сплошная строка, ведь нет ни тега <br> - разрыва строки, ни <p> - нового абзаца.
Так что верно. Это ж HTML.

Fatality
26.09.2009, 19:03
Это ж HTML. Ага, HTML. Только вот флеш в отличии от браузера переходит на новую строку, когда натыкается на \n или \r.

mooncar
26.09.2009, 19:18
Поэтому один символ нужно убирать.

kichSman
26.09.2009, 20:34
var txt:String = "привет\nвыпускникам";
соответственно, подгружаться во флэш также, почти слитно и во одну строку

getelse
27.09.2009, 08:08
удали
story.ignoreWhite = true;