Просмотр полной версии : Scroll большого фрагмента текста
qsedftghk
04.05.2009, 01:08
Ребята, я понимаю, что вопрос похож на ламерский, но, черт возьми, бьюсь уже день третий...
Есть простой TextField с UIScrollbar. В него запихнуто страниц 36 (если смотреть в Word`е) текста. Вопрос. Почему не весь текст прокручивается, а только до 23 страницы? Остаток текста не виден. Такое ощущение, что у TextField есть какое-то ограничение на количество вставляемого в него текста.
Пример текста и сам исходник прилагаю. Подскажите пожалуйста, в чем трабла, мозг высох совсем.
ЗЫ. Чего хочу добиться: Текст из word`а скопировать в TextField и, чтобы можно было его прокручивая, просмотреть весь целиком.
Да, не влезает.
Текст сформируйте как HTML, назначте стили, далее - работа AS: загружайте его в поле с использованием стилей, поле уже динамическое.
Тогда и жирности будут и курсивы.
Добавлено через 26 минут
Если не разберетесь, пишите в личку....
qsedftghk
04.05.2009, 02:44
Кстати, могу показать исходник того, что делаю... (в личку). Но боюсь, буду осмеян нипадецки, ибо, чую, что так уже лет сто не делают...
Вот как-то так.
Исходник прилагается.
var myVars1:LoadVars = new LoadVars(); //объект для текста 1
var txt_url_1:String = "tri_1var.htm" //URL текста 1
var myVars2:LoadVars = new LoadVars(); //объект для текста 2
var txt_url_2:String = "tri_2var.htm" //URL текста 2*/
// Загружаем текст вариант 1 (шрифт не внедрен в поле (вместо Arno Pro у тех, у кого его нет, будет Georgia), но работает HTML (жирный, курсив)
myVars1.onData = function(src:String):Void {
if (src != undefined) {
InstanceName_3_1.htmlText = src;
} else {
InstanceName_3_1.text = "Невозможно загрузить HTML file";
}
};
myVars1.load(txt_url_1);
// Загружаем текст вариант 2
// (HTML не работает, зато в поле внедрен Arno Pro (кнопка "Embed" на свойствах поля), у всех будет показывать именно с этим шрифтом)
myVars2.onData = function(src:String):Void {
if (src != undefined) {
InstanceName_3_2.htmlText = src;
} else {
InstanceName_3_2.text = "Невозможно загрузить HTML file";
}
};
myVars2.load(txt_url_2);
На сколько я понял, всё что нужно было..
content_txt.multiline= true;
content_txt.wordWrap = true;
content_txt.html = true;
var myXml:XML = new XML();
myXml.ignoreWhite = true;
myXml.load("text.html");
myXml.onLoad = function () {
content_txt.htmlText = myXml;
}
+Текстовое поле и компонент.
Ещё лучше к этому всему подключить стили, хотя если текста много, вручную формировать его..жесть..
Лучше использовать разрешение html, а не htm.
useCodepage вообще лучше не использовать.
На самом деле, в старых версиях по крайней мере, был такой потолок - 23-28 Кб текста. - Текстфилд становился не адекватным. А вот если такие текстфилды собрать в акордион, флеш вообще зависает при загрузке.
Актуальность такой простыни во флеш говорит о неправильности концепта. Делайте по другому.
qsedftghk
04.05.2009, 10:49
Большое спасибо за примеры. Придётся, всё-таки как я вижу, подгружать текст из внешнего файла, чего делать не хотелось...
Заметил странность поведения UIScrollBar в моем файле - он не реагирует на мышку, а в примере Mooncar`a все работает пучком... Сейчас буду разбираться.
Актуальность такой простыни во флеш говорит о неправильности концепта
Я об этом уже думал... Но... тут только так и никак иначе.
Кстати, не дадите ссылку, где почитать, о том, как менять внешний вид стандартного флешевского компонента в Flash CS3? Или в кратце суть описать... Так проще потом понять, что там в хелпе понаписано... И вообще литература существует нормальная какая-нибудь по флешу, или, всё как обычно, - там почитал, здесь почитал.....?
На самом деле, в старых версиях по крайней мере, был такой потолок - 23-28 Кб текста.
С восьмой версии.
Я без особых проблем грузил по 4 mb форматированного текста(это примерно 1400 страниц). Подгружалось, примерно 15-20 сек. Скроллер работал вполне живенько.
qsedftghk
04.05.2009, 11:51
подключить стили - это css имеется ввиду? А как это, на словах хотя бы, не подскажете?
Подгружалось, примерно 15-20 сек.Это слишком долго.
Долго?
А за какое время должен открываться документ с таким объёмом во флешке. Конечно, нотпад за секунду открывает, но во флешке ещё учитывается всякая графическая приблуда+zinc оболочка+транспарент моде.
Если грузить текст в голый проект, то у меня затрачивалось 9 сек. Наверняка ещё стоит учитывать мощность проца.
Долго. Открыть приложение которое потом виснет на 20 секунд, это не приемлемо для такого рода задач.
Ну так лично у меня и задача как таковая не стояла, чтобы загружать большой объем текста:)
Конечно, я согласен, это долго, но, к сожалению, это лучший результат, который получилось добиться.
Может вы посоветуете что-нибудь насчет производительности?:)
Не выводить весь текст сразу.
KiL33, это все замечательно, но в большом текстфилде со скролем скролить столько букв... Я про экспорт из Ворда - когда тупо скопипастили текст из ворда в текстфилд!
Я не понимаю, зачем делать длинный скроль из того же ворда не сохраняя разбивку на страницы. Адекватный экспорт же давно уже реализован.
Адекватный экспорт же давно уже реализован.
Например?
Добавлено через 8 минут
Лучше использовать разрешение html, а не htm.
useCodepage вообще лучше не использовать.
Разъясните, пожалуйста, оба момента.
qsedftghk
04.05.2009, 15:51
со стилями разобрался... мда... достаточно гемморно такое количество текста переколбашивать в html...
Для виндов под 6 плеер и ап - пример (http://www.adobe.com/products/flashpaper/).
Делай не руками. Скопируй из Ворда в Dreamweaver, в область контента, а потом скопируй код из области кода. А потом - либо в том же Ворде, вставкой-заменой ненужных тегов на нужные, либо, как сказали выше, пиши парсер.
Я про экспорт из Ворда - когда тупо скопипастили текст из ворда в текстфилд!
Не..я загружал готовый текст для редактирования в флешку из файла.
Это был сравнительно простенький редактор хтмл_ьных тегов с возможностью сохранить всё сверстанное в txt файл и по необходимости загружать его же обратно для редактирования.
Разумеется txt файл был небольшого размера, все остальные ухищрения с большим размером файла были просто ради того чтобы проверить на какой объём данных может вытянуть флешка.
Не выводить весь текст сразу.
Наверняка это правильная идея, но я с этим пока что не разбирался.
Добавлено через 13 минут
Для виндов под 6 плеер и ап - пример (http://www.adobe.com/products/flashpaper/).
Брать готовый флешпапер не самая лучшая идея, если ты пишешь под особые нужды))
Гораздо интересней узнать, как работает флешпепер? Я сомневаюсь, что он выводит текст с какой-то задержкой. Он, конечно, постепенно загружает текст, но он грузит его сразу весь, тем не менее, производительность выше..
Брать готовый флешпапер не самая лучшая идея, если ты пишешь под особые нужды))
Гораздо интересней узнать, как работает флешпепер? Я сомневаюсь, что он выводит текст с какой-то задержкой. Он, конечно, постепенно загружает текст, но он грузит его сразу весь, тем не менее, производительность выше..
Такие вещи писать заново каждый раз - не лучшая идея.
Чтобы не сомневаться, надо смотреть доки (http://www.adobe.com/support/documentation/en/flashpaper/2/flashpaper_api/flashpaper_api3.html).
Вопрос близкий к теме.
Может подскажите, отчего Flash воспринимает простой перевод строки в HTML-документе не как разрыв строки <br>, а как полноценный новый абзац <p> ? И делает соответственно два перевода строки перед новым текстовым блоком.
Приходится в документе, где нужно просто новую строку начать, вставить <br> и продолжать текст на той же строчке.
Он воспринимает его как разрыв строки. Просто в Windows для переноса используется два символа \r и \n, а для флеша любой из них, в результате возникает два переноса.
То есть, когда флеш отрисовывает HTML, он сперва встречает \n , "ага, новая строка", делает разрыв строки и возвращает каретку? А потом натыкается на \r, принимает возврат каретки за начало новой строки и еще раз делает уже ненужный разрыв строки и еще раз возвращает каретку, так?
То есть для него есть только понятие "новая строка", куда входит и разрыв и возврат, хотя для Windows это разные вещи?
Да, только сначал \r, а потом \n :)
Есть такое решение проблемы:
str = str.split ("\r\n").join ("\r");
Да, только сначал \r, а потом \n :)
Есть такое решение проблемы:
str = str.split ("\r\n").join ("\r");
Спасибо! А ведь сколько пришлось помучиться!
qsedftghk
05.05.2009, 02:41
Ребза! большущее спасибо, все получилось как надо... Я даже, наконец-таки понял, как можно менять внешний вид у стандартной компоненты...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.