2013-09-01 2 views
0

Я использую этот несколько раз ActionScript в документе:Preload текст с внешнего сайта

var loader1:URLLoader = new URLLoader(new URLRequest("http:url.com/example.txt")); 
loader1.addEventListener(Event.COMPLETE, completeHandler); 

function completeHandler(event:Event):void { 
var loadedText1:URLLoader = URLLoader(event.target); 
Box.text = loadedText1.data; 
} 

К сожалению, как правило, значительное отставание с точки зрения этого текста появляются. Как я могу получить флеш-память для кэширования этих текстовых файлов, прежде чем она предложит их отобразить? - вроде как предварительный загрузчик для текстовых файлов.

ответ

0

Это рудиментарная очередь загрузки, которая берет вектор строк URL-адресов и загружает затем текст из них в последовательности, а затем уведомляет вас, когда все будет сделано. После этого вы можете получить доступ к сохраненному тексту в любой точке.

import flash.events.Event; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 

var urls:Vector.<String> = new <String>["ex1.txt", "ex2.txt", "ex3.txt"]; //Add all your URLs here 
var loadedText:Vector.<String> = new <String>[]; //Your text will be stored here 
var queuePos:int = 0; 
var textLoader:URLLoader = new URLLoader(); 
textLoader.addEventListener(Event.COMPLETE, text_load); 
this.addEventListener("TEXT_LOADED", text_display); 

text_load(); //This is called to start the loading process 

function text_load(event:Event=null):void { 
    if (queuePos > 0) loadedText.push(textLoader.data); //Store the last received text 

    if (queuePos >= urls.length) { //Stop the queue if all complete 
     textLoader.removeEventListener(Event.COMPLETE, text_load); 
     dispatchEvent(new Event("TEXT_LOADED")); 
     return; 
    } 

    textLoader.load(new URLRequest(urls[queuePos])); //Load the next URL 
    queuePos++; 
} 

function text_display(event:Event):void { //Called once all text has been loaded 
    Box.text = loadedText[0]; //Adds text from the 1st URL to the Box TextField 
    Box2.text = loadedText[1]; //Adds text from the 2nd URL, etc. 
} 

Таким образом, это позволяет вам в первую очередь выполнять всю внешнюю загрузку сразу. И после того, как вы позволите запустить один раз, вы можете в любой момент захватить любые сохраненные фрагменты текста из вектора loadedText. например Box.text = loadedText[0]; для загрузки текста с первого URL-адреса в вектор urls и т. Д.

Как примечание стороны, это может сделать жизнь проще, чтобы ваш внешний контент, содержащийся в одном XML или JSON файл, оба из которых хорошо поддерживается в Flash. Это позволяет разделить фрагменты текста, которые вам нужны, на отдельные переменные внутри одного файла, что уменьшает количество требуемых запросов на загрузку. Конечно, вы можете не контролировать определенный контент, который вы извлекаете, и в этом случае он не будет применяться. Но если вы автор контента, я бы рекомендовал изучить их.

Смежные вопросы