Просмотр полной версии : Пустая строка в 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;
}
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('');
}
Конструкцию split - join применяют для убирания лишнего спецсимовла \r (перевод каретки) и применяют к строковым данным. Поопробуйте так:
content_txt.htmlText = story.toString().split('\r').join('');
Добавлено через 9 минут
Я с XML не знаком, пользуюсь для получения данных из html обычным LoadVars. Вопрос - а что, чтобы строку из файла XML получить, вот прямо так можно приравнять экземпляр XML (story) значению текста текстового поля?
А если загрузка ч/з 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");
Спасибо mooncar & Fatality
codfelix
26.09.2009, 13:26
Подскажите
Если файл(sample.html),
такой
<b>Привет</b>
<b>Выстникам</b>
то почему в flash TextField теряется enter?
вот
ПриветВыстникам
Ну теперь попробуйте убрать 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.
Поэтому один символ нужно убирать.
kichSman
26.09.2009, 20:34
var txt:String = "привет\nвыпускникам";
соответственно, подгружаться во флэш также, почти слитно и во одну строку
удали
story.ignoreWhite = true;
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.