![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 2
|
Привет всем. На одном из этапов программирования графической оболочки для информационного терминала столкнулся с проблемой, на решение которой очень мало времени.
Задача такая: Нужно текст из некоторого *.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, время: 23:10. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|