|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Feb 2007
Сообщений: 2
|
Как поместить в Flash текст из файла?
Привет всем. На одном из этапов программирования графической оболочки для информационного терминала столкнулся с проблемой, на решение которой очень мало времени.
Задача такая: Нужно текст из некоторого *.txt файла, посредством ActionScript поместить в текстовое поле, но таким образом, чтобы не появлялся ScrollBar. Т.е. на экране должен появлятся не весь текст, а только часть, например с 1 по 20 строки. И посредством экранных кнопочек [>>] и [<<] появлялись бы остальные фрагменты текста (с 21 по 40, с 41 по 60 и т.д.) Есть ли возможность читать из файла с заданной позиции до заданной позиции, или возможность загрузить файл в массив, предварительно поделив его на строчки определенной длинны? |
|
|||||
поищите по поиску
недельку назад было то же самое
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
Эх, поробую без поиска сам решить эту задачку для начинающих отвечальщиков...
Код работает в МХ. Нужны 2 кнопки и поле для ввода типа динамик_текст System.useCodepage = true; //Текстовый файл грузим с помощью XML var my_xml = new XML(); var my_array = new Array(); // Число параграфов var elCount = 0; // Текущий параграф var myPara = 0; my_xml.load("text.txt"); //Метод onData применяем, чтоб текстовый файл // не был разобран как XML my_xml.onData = function(s) { //Указатели на начало и конец выделяемой строки var vector = 0; var oldVector = 0; // Число строк для абзаца var stringCount = 0; h_str = ""; //Для отладки выводим информацию о загрузке if (s == undefined) { trace("Файл не найден"); } else { trace("Данные успешно загружены"); } my_str = s; //Загружаем по кускам в массив do { // Ищем символы перехода на следущую строку vector = my_str.indexof('\r\n', oldVector); // Если строка не последняя, просто копируем ее if (vector > -1) { // Выделяем строку, отбросив \n h_str = my_str.substring(oldVector, vector+1); } else { // Иначе копируем и выставляем наш флаг конца файла vector = my_str.length; h_str = my_str.substring(oldVector, ks.length); vector = -1; } // Если уже загружены 3 строки в параграф, // увеличиваем счетчик числа параграфов if (stringCount > 2){ elCount++; stringCount = 0; } //Добавляем к абзацу выделенную строку my_Array[elCount]+=h_str; stringCount++; if (oldVector+4 > my_str.length){ vector = -1; } else { oldVector = vector+2; } } while (vector > -1) //Для отладки выводим элемент массива trace(my_Array[1]); //Загружаем первый параграф в наше поле для текста my_txt.text = my_Array[0] }; // Функция для ввода в поле текста следующего параграфа function myFoward() { if (myPara < elCount) myPara++; my_txt.text = my_Array[myPara]; } // Функция для ввода в поле текста предыдущего параграфа function myBack() { if (myPara > 0) myPara--; my_txt.text = my_Array[myPara]; } forward_btn.onRelease = function () { myFoward(); } back_btn.onRelease = function () { myBack(); } |
|
|||||
Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
|
Не ясно, зачем использовать XML если грузишь текст. Есть _txt.scroll и _txt.maxhscroll, не вижу нужды использования XML в данной ситуации
|
|
|||||
Тема обсуждалась очень много раз!
|
|
|||||
Цитата:
Согласен со всеми, что тема много раз обсуждалась, просто я давно не программировал в AS - вот решил маленькую тренировку сделать. |
|
|||||
Регистрация: Feb 2007
Сообщений: 2
|
Kogrom, спасибо огромное за подробный комментарий
|
Часовой пояс GMT +4, время: 18:12. |
|
« Предыдущая тема | Следующая тема » |
|
|