Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.08.2008, 01:05
Serious06 вне форума Посмотреть профиль Отправить личное сообщение для Serious06 Найти все сообщения от Serious06
  № 1  
Ответить с цитированием
Serious06

Регистрация: Jul 2008
Сообщений: 11
По умолчанию TextField.scroll и загрузка текста частями

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

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

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


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


Последний раз редактировалось Serious06; 13.08.2008 в 01:09.
Старый 13.08.2008, 08:42
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 2  
Ответить с цитированием
Double
 
Аватар для Double

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

Старый 13.08.2008, 13:51
Serious06 вне форума Посмотреть профиль Отправить личное сообщение для Serious06 Найти все сообщения от Serious06
  № 3  
Ответить с цитированием
Serious06

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

Старый 13.08.2008, 14:14
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 4  
Ответить с цитированием
Double
 
Аватар для Double

Регистрация: Mar 2001
Сообщений: 1,147
не за что.
одно замечание: предложенный мной вариант не пострадает при смене шрифта.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 13.08.2008, 19:55
Serious06 вне форума Посмотреть профиль Отправить личное сообщение для Serious06 Найти все сообщения от Serious06
  № 5  
Ответить с цитированием
Serious06

Регистрация: Jul 2008
Сообщений: 11
Да, но все-таки посимвольно парсить 2 мегабайта текста - это слишком 100 символов методом charAt обрабатываются около 5 секунд на девайсе.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:32.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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