Просмотр полной версии : Как поместить в Flash текст из файла?
Anton S. Chegus
05.02.2007, 08:30
Привет всем. На одном из этапов программирования графической оболочки для информационного терминала столкнулся с проблемой, на решение которой очень мало времени.
Задача такая:
Нужно текст из некоторого *.txt файла, посредством ActionScript поместить в текстовое поле, но таким образом, чтобы не появлялся ScrollBar. Т.е. на экране должен появлятся не весь текст, а только часть, например с 1 по 20 строки. И посредством экранных кнопочек [>>] и [<<] появлялись бы остальные фрагменты текста (с 21 по 40, с 41 по 60 и т.д.)
Есть ли возможность читать из файла с заданной позиции до заданной позиции, или возможность загрузить файл в массив, предварительно поделив его на строчки определенной длинны?
поищите по поиску
недельку назад было то же самое
Эх, поробую без поиска сам решить эту задачку для начинающих отвечальщиков...
Код работает в МХ. Нужны 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();
}
Не ясно, зачем использовать XML если грузишь текст. Есть _txt.scroll и _txt.maxhscroll, не вижу нужды использования XML в данной ситуации
Тема обсуждалась очень много раз!
Не ясно, зачем использовать XML если грузишь текст. Есть _txt.scroll и _txt.maxhscroll, не вижу нужды использования XML в данной ситуации
Наверно я что-то не понял, но требовалось загрузить информацию из файла типа text.txt (то есть произвольного текстового файла). Как это сделать с помощью _txt.scroll и _txt.maxhscroll не знаю. Хотелось бы посмотреть пример.
Согласен со всеми, что тема много раз обсуждалась, просто я давно не программировал в AS - вот решил маленькую тренировку сделать.
Anton S. Chegus
05.02.2007, 16:46
Kogrom, спасибо огромное за подробный комментарий :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.