Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Scroll большого фрагмента текста (http://www.flasher.ru/forum/showthread.php?t=124567)

qsedftghk 04.05.2009 01:08

Scroll большого фрагмента текста
 
Вложений: 1
Ребята, я понимаю, что вопрос похож на ламерский, но, черт возьми, бьюсь уже день третий...
Есть простой TextField с UIScrollbar. В него запихнуто страниц 36 (если смотреть в Word`е) текста. Вопрос. Почему не весь текст прокручивается, а только до 23 страницы? Остаток текста не виден. Такое ощущение, что у TextField есть какое-то ограничение на количество вставляемого в него текста.
Пример текста и сам исходник прилагаю. Подскажите пожалуйста, в чем трабла, мозг высох совсем.

ЗЫ. Чего хочу добиться: Текст из word`а скопировать в TextField и, чтобы можно было его прокручивая, просмотреть весь целиком.

mooncar 04.05.2009 01:49

Да, не влезает.
Текст сформируйте как HTML, назначте стили, далее - работа AS: загружайте его в поле с использованием стилей, поле уже динамическое.
Тогда и жирности будут и курсивы.

Добавлено через 26 минут
Если не разберетесь, пишите в личку....

qsedftghk 04.05.2009 02:44

Кстати, могу показать исходник того, что делаю... (в личку). Но боюсь, буду осмеян нипадецки, ибо, чую, что так уже лет сто не делают...

mooncar 04.05.2009 07:08

Вложений: 1
Вот как-то так.
Исходник прилагается.
Код AS1/AS2:

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);


KiL33 04.05.2009 08:27

На сколько я понял, всё что нужно было..
Код AS1/AS2:

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 вообще лучше не использовать.

aksios 04.05.2009 09:51

На самом деле, в старых версиях по крайней мере, был такой потолок - 23-28 Кб текста. - Текстфилд становился не адекватным. А вот если такие текстфилды собрать в акордион, флеш вообще зависает при загрузке.
Актуальность такой простыни во флеш говорит о неправильности концепта. Делайте по другому.

qsedftghk 04.05.2009 10:49

Большое спасибо за примеры. Придётся, всё-таки как я вижу, подгружать текст из внешнего файла, чего делать не хотелось...

Заметил странность поведения UIScrollBar в моем файле - он не реагирует на мышку, а в примере Mooncar`a все работает пучком... Сейчас буду разбираться.

Цитата:

Актуальность такой простыни во флеш говорит о неправильности концепта
Я об этом уже думал... Но... тут только так и никак иначе.

Кстати, не дадите ссылку, где почитать, о том, как менять внешний вид стандартного флешевского компонента в Flash CS3? Или в кратце суть описать... Так проще потом понять, что там в хелпе понаписано... И вообще литература существует нормальная какая-нибудь по флешу, или, всё как обычно, - там почитал, здесь почитал.....?

KiL33 04.05.2009 11:45

Цитата:

На самом деле, в старых версиях по крайней мере, был такой потолок - 23-28 Кб текста.
С восьмой версии.
Я без особых проблем грузил по 4 mb форматированного текста(это примерно 1400 страниц). Подгружалось, примерно 15-20 сек. Скроллер работал вполне живенько.

qsedftghk 04.05.2009 11:51

подключить стили - это css имеется ввиду? А как это, на словах хотя бы, не подскажете?

iNils 04.05.2009 12:13

Цитата:

Подгружалось, примерно 15-20 сек.
Это слишком долго.

KiL33 04.05.2009 14:37

Долго?
А за какое время должен открываться документ с таким объёмом во флешке. Конечно, нотпад за секунду открывает, но во флешке ещё учитывается всякая графическая приблуда+zinc оболочка+транспарент моде.

Если грузить текст в голый проект, то у меня затрачивалось 9 сек. Наверняка ещё стоит учитывать мощность проца.

iNils 04.05.2009 14:38

Долго. Открыть приложение которое потом виснет на 20 секунд, это не приемлемо для такого рода задач.

KiL33 04.05.2009 14:46

Ну так лично у меня и задача как таковая не стояла, чтобы загружать большой объем текста:)
Конечно, я согласен, это долго, но, к сожалению, это лучший результат, который получилось добиться.
Может вы посоветуете что-нибудь насчет производительности?:)

iNils 04.05.2009 14:51

Не выводить весь текст сразу.

aksios 04.05.2009 14:54

KiL33, это все замечательно, но в большом текстфилде со скролем скролить столько букв... Я про экспорт из Ворда - когда тупо скопипастили текст из ворда в текстфилд!
Я не понимаю, зачем делать длинный скроль из того же ворда не сохраняя разбивку на страницы. Адекватный экспорт же давно уже реализован.

mooncar 04.05.2009 15:29

Цитата:

Сообщение от aksios (Сообщение 817392)
Адекватный экспорт же давно уже реализован.

Например?

Добавлено через 8 минут
Цитата:

Сообщение от KiL33 (Сообщение 817351)
Лучше использовать разрешение html, а не htm.
useCodepage вообще лучше не использовать.

Разъясните, пожалуйста, оба момента.

qsedftghk 04.05.2009 15:51

со стилями разобрался... мда... достаточно гемморно такое количество текста переколбашивать в html...

aksios 04.05.2009 15:53

Для виндов под 6 плеер и ап - пример.

mooncar 04.05.2009 15:55

Делай не руками. Скопируй из Ворда в Dreamweaver, в область контента, а потом скопируй код из области кода. А потом - либо в том же Ворде, вставкой-заменой ненужных тегов на нужные, либо, как сказали выше, пиши парсер.

KiL33 04.05.2009 16:02

Цитата:

Сообщение от aksios (Сообщение 817392)
Я про экспорт из Ворда - когда тупо скопипастили текст из ворда в текстфилд!

Не..я загружал готовый текст для редактирования в флешку из файла.

Это был сравнительно простенький редактор хтмл_ьных тегов с возможностью сохранить всё сверстанное в txt файл и по необходимости загружать его же обратно для редактирования.
Разумеется txt файл был небольшого размера, все остальные ухищрения с большим размером файла были просто ради того чтобы проверить на какой объём данных может вытянуть флешка.

Цитата:

Не выводить весь текст сразу.
Наверняка это правильная идея, но я с этим пока что не разбирался.

Добавлено через 13 минут
Цитата:

Сообщение от aksios (Сообщение 817407)
Для виндов под 6 плеер и ап - пример.

Брать готовый флешпапер не самая лучшая идея, если ты пишешь под особые нужды))
Гораздо интересней узнать, как работает флешпепер? Я сомневаюсь, что он выводит текст с какой-то задержкой. Он, конечно, постепенно загружает текст, но он грузит его сразу весь, тем не менее, производительность выше..

aksios 04.05.2009 16:22

Цитата:

Сообщение от KiL33 (Сообщение 817411)
Брать готовый флешпапер не самая лучшая идея, если ты пишешь под особые нужды))
Гораздо интересней узнать, как работает флешпепер? Я сомневаюсь, что он выводит текст с какой-то задержкой. Он, конечно, постепенно загружает текст, но он грузит его сразу весь, тем не менее, производительность выше..

Такие вещи писать заново каждый раз - не лучшая идея.
Чтобы не сомневаться, надо смотреть доки.

mooncar 04.05.2009 16:45

Вопрос близкий к теме.
Может подскажите, отчего Flash воспринимает простой перевод строки в HTML-документе не как разрыв строки <br>, а как полноценный новый абзац <p> ? И делает соответственно два перевода строки перед новым текстовым блоком.
Приходится в документе, где нужно просто новую строку начать, вставить <br> и продолжать текст на той же строчке.

iNils 04.05.2009 16:49

Он воспринимает его как разрыв строки. Просто в Windows для переноса используется два символа \r и \n, а для флеша любой из них, в результате возникает два переноса.

mooncar 04.05.2009 16:59

То есть, когда флеш отрисовывает HTML, он сперва встречает \n , "ага, новая строка", делает разрыв строки и возвращает каретку? А потом натыкается на \r, принимает возврат каретки за начало новой строки и еще раз делает уже ненужный разрыв строки и еще раз возвращает каретку, так?
То есть для него есть только понятие "новая строка", куда входит и разрыв и возврат, хотя для Windows это разные вещи?

iNils 04.05.2009 17:04

Да, только сначал \r, а потом \n :)
Есть такое решение проблемы:
Код AS1/AS2:

str = str.split ("\r\n").join ("\r");


mooncar 04.05.2009 17:06

Цитата:

Сообщение от iNils (Сообщение 817436)
Да, только сначал \r, а потом \n :)
Есть такое решение проблемы:
Код AS1/AS2:

str = str.split ("\r\n").join ("\r");


Спасибо! А ведь сколько пришлось помучиться!

qsedftghk 05.05.2009 02:41

Ребза! большущее спасибо, все получилось как надо... Я даже, наконец-таки понял, как можно менять внешний вид у стандартной компоненты...


Часовой пояс GMT +4, время: 16:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.