Форум 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)
-   -   TextField.scroll и загрузка текста частями (http://www.flasher.ru/forum/showthread.php?t=114898)

Serious06 13.08.2008 01:05

TextField.scroll и загрузка текста частями
 
Задача следущая, имеется некий не сильно производительный девайс, поддерживающий Flash 7. Я загружаю БОЛЬШОЙ(около 2 мб) текстовый файл в переменную (с этим проблем нет), и теперь мне нужно его последовательно вывести на экран (сделать читалку). Сначало вырезаю первые 1000 символов сабстрингом, загоняю в текстфилд, занимающий весь экран. Листаю .scroll-ом по 11 строчек (ровно столько влазит в текстфилд по вертикали) до конца, как и следовало ожидать, в последний скролл текст сдвигается не на 11 строчек, из-за некратности maxscroll одиннадцати. Мне нужно перед этим последним скроллом добавить в текстфилд следущие 1000 сиволов, а в текстфилде оставить только то, что сейчас на экране. Этого я реализовать не могу, и, побродив по форуму, сложилось впечатление, что никто не может под as2. В таком случае вопрос - как мне реализовать последовательный вывод большого текста кусками по 1000 символов, "сглаживая" края между ними, и чтобы выполнялось условие - последнее слово на текущем экране и первое на следущем в исходном тексте идут друг за другом? Повторюсь, девайс обладает ограниченной производительностью.

Я пробовал на предпоследнем экране добавлять посимвольно данные, пока maxscroll не станет нужной кратности, но этот медот ужасно тормозит на девайсе.

Так же были мысли по поводу сдвига на последнем экране основного текстфилда вверх, до тех пор, пока на экране останется только новая строчка(та, что не была показана на предыдущем, это я реализовать могу) создания такого-же под ним стык-в-стык, и заполнением новыми 1000 символами, потом опять сдвиг по y и второй текстфилд делать основным. Этот способ будет работать, но у него есть один недостаток - разрыв посреди слова.


P.S. Извиняюсь за длину сообщения и сложность изложения =)

Double 13.08.2008 08:42

длина сообщения - это хорошо. хуже, когда пишут "помогите открыть окно чтобы не открывало файл а возвращало путь" - вот и думай, о чём речь.
в Вашей беде выход видится такой:
1. берём текстовое поле и начинаем из основного текста сливать туда по одному слову (переносы по словам же делаются?) до тех пор, пока ширина поля не превысит ширину поля вывода текста.
2. последнее слово сохраняем в какой-нить переменной, остальные становятся первым элементом массива строк.
так разбиваем на строки весь текст и работаем со строками, не заморачиваясь на стыковки и прочую лабуду.
если у девайса с производительностью всё совсем плохо, делаем процесс разбиения на строки менее динамичным. одну страницу набираем, а потом сажаем функцию формирования строки на setInterval ну и генерим по одной строке раз в 100мс (опытным путём интервал можно подобрать).
примерно так.

Serious06 13.08.2008 13:51

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

Double 13.08.2008 14:14

не за что.
одно замечание: предложенный мной вариант не пострадает при смене шрифта.

Serious06 13.08.2008 19:55

Да, но все-таки посимвольно парсить 2 мегабайта текста - это слишком ;) 100 символов методом charAt обрабатываются около 5 секунд на девайсе.


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

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