ЗАГРУЗКА НЕФОРМАТИРОВАННОГО ТЕКСТОВИКА
Как-то давно один умный человек пытался мне втолковать логику загрузки текстов из текстового файла без прописывания переменных в нём. У него ничего не вышло. Я затупил :)). И вот спустя почти год, я вспомнил эту тему и сделал свой прототипчик. Для начала, что это и зачем это нужно? Обычно мы пишем тексты в текстовике для последующей загрузки во flash так:
any_var =бла бла бла
а используя этот скрипт будем писать просто:
бла бла бла
и в результате это помогает забывчивым / туповатым клиентам не делать косяков, когда они редактируют такой текстовик, например с новостями.
Нам же в свою очередь нужно будет знать только одну команду:
any_movieclip.loadText( url, textfield);
пример использования:
_root.loadText("text.txt", "news");
где text.txt - текстовик в той же директории, что и swf, а news - переменная, можно ассоциированная с текстовым полем в руте.
Но прежде, чем использовать нужно сделать пару приготовлений.
Вначале в самых первых кадрах нужно вставить скрипт:
Movieclip.prototype.loadText = loadText; // помещаем в прототип мувиклипов функцию loadText
function loadText (from, to) { // задаем функцию
var name = "$text_loader"+ to // создаем составное имЯ
this.attachMovie( "$text_loader", name, 9999 ); // аттачим из библиотеки мувик с идентификатором $text_loader и назначаем ему составное имЯ.
this[name].from = from;
this[name].to = to; // передадим этому мувику данные откуда скачивать и куда класть результат
}
затем нужно создать мувиклип с именем $text_loader и в
первом кадре написать:
xmlTemp = new XML(); // создаем объект xml
xmlTemp.load( from ); // говорим загрузить в него текстовый файл имЯ его в переменной from
gotoAndPlay ( 3 ); // и идем проверЯть загрузку
второй кадр оставим пустым.
третий кадр:
if (xmlTemp.loaded) { // если текстовик загружен
_parent[to] = xmlTemp.firstChild.nodeValue; // то поместим его текст в переменную, имЯ которой хранитсЯ в переменной to
removeMovieClip (this); // и удалим этот мувиклип со всем его содержимым - он свое отслужил
} else { // а если текстовик не загружен
prevFrame (); // прыгаем на предыдущий кадр
play (); // и из него входим на повторную проверку загрузки
}
и еще нужно сделать одну маленькую деталь: этому мувику в библиотеке задать linkage identifier - $text_loader всё. теперь в любом месте в любом мувике мы можем вызывать команду типа
_root.loadText("text.txt", "news");
работает без проблем в пятой версии Flash.
В MX загружается, но корректно будет отображаться только если текстовик будет в юникоде. Для того нужно текстовой файл открыть в ворде и сохранить как обычный текст в формате Юникод.
И еще: символы < > в текстовике нужно заменять на < > соответственно.