ЗАГРУЗКА НЕФОРМАТИРОВАННОГО ТЕКСТОВИКА

 

Как-то давно один умный человек пытался мне втолковать логику загрузки текстов из текстового файла без прописывания переменных в нём. У него ничего не вышло. Я затупил :)). И вот спустя почти год, я вспомнил эту тему и сделал свой прототипчик. Для начала, что это и зачем это нужно? Обычно мы пишем тексты в текстовике для последующей загрузки во 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 загружается, но корректно будет отображаться только если текстовик будет в юникоде. Для того нужно текстовой файл открыть в ворде и сохранить как обычный текст в формате Юникод.

И еще: символы < > в текстовике нужно заменять на &lt; &gt; соответственно.

 

Hosted by uCoz