2010-08-04 2 views
0

У меня есть внешний файл журнала, имя которого меняется каждый сеанс, с форматом XXXXX.logAS3, Проходят внешнюю переменную в функцию

Мне нужно, чтобы загрузить его внутри швейцарских франков, чтобы показать свои данные, но каждый раз, Имя журнала другое, мне нужно открыть .fla, изменить имя файла, а затем повторно опубликовать swf.

Так что я сделал простой скрипт для загрузки другого .txt, чтобы ввести вручную в нем 5 номер log's имя и загрузить его снаружи внутрь швейцарских франков:

var logNumLoader:URLLoader = new URLLoader(); 
logNumLoader.dataFormat=URLLoaderDataFormat.VARIABLES; 
logNumLoader.addEventListener(Event.COMPLETE, loadedLogNum); 
logNumLoader.load(new URLRequest("infoLogNum.txt")); 

function loadedLogNum(e:Event):void { 

     trace(e.target.data.logNum); // HOW TO GET THE VALUE OF logNum... *(see below) 

     } 

В «infoLogNum. .txt»содержит только переменную, которая является вручную напечатал имя .log, как:

logNum=12345 

Этот скрипт работает идеально, так как он выводит значение переменной, в данном случае„12345“.

Но мне нужно это «logNum» значение передается в другой функции, которая загружает и открывает XXXXX.log (см в коде внизу):

... 

var tracksLoader:URLLoader = new URLLoader(); 
tracksLoader.addEventListener(Event.COMPLETE,onTracksLoaded); 
tracksLoader.addEventListener(IOErrorEvent.IO_ERROR,onTracksError); 
tracksLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onTracksError); 

loadTracks(); 

function onTracksLoaded(e:Event):void { 
    trace("onTracksLoaded"); 
    parseTracks(tracksLoader.data); 
    reload.start(); 
} 

function onTimer(event:TimerEvent):void{ 
    loadTracks(); 
} 

function onTracksError(e:Event):void { 
    trace("onTracksError", e); 
    reload.start(); 
} 

function loadTracks():void { 
    tracksLoader.load(new URLRequest(logNum+".log")); // (*) ...AND SET THE logNum VALUE HERE 
} 

Пока я не могу присвоить значение logNum до последней функции, .log не может быть открыт.

У меня нет понятия о том, как заставить его работать. Любые идеи, пожалуйста?

TIA.

ответ

0

Возможно, что-то вроде этого:

function loadedLogNum(e:Event):void { 
    var logNum:String = e.target.data.split("=")[1]; // returns "12345" 
    tracksLoader.load(new URLRequest(logNum + ".log")); 
} 
+0

Я не мог заставить его работать. Я обновил остальную часть своего кода. Для файла журнала есть еще один URLLoader. Первая работает нормально как переменная, я думаю, что ее изменение в качестве строки не является необходимым решением. Благодарю. – Pablo

0

Что происходит на вашем коде, что Youa повторно запущен loadTracks() перед кодом имеет достаточно времени, чтобы загрузить номер журнала. Во-вторых, вы можете назначить logNum локальной переменной, которая затем может использоваться в вашей функции loadTracks().

logNumLoader.load(new URLRequest("infoLogNum.txt")); 

//New local variable that will hold the logNum; 
var _logNum : String ; 

function loadedLogNum(e:Event):void { 

trace(e.target.data.logNum); // HOW TO GET THE VALUE OF logNum... *(see below) 
// Once infoLogNum is loaded, you can assign the value to the local variable   
_logNum = e.target.data.logNum; 
// Now you can load your tracks. 
loadTracks(); 
    } 

//Down in your loadTracks you can use the local logNum. 
function loadTracks():void { 
    tracksLoader.load(new URLRequest(_logNum+".log")); // (*) ...AND SET THE logNum VALUE HERE 
} 
+0

Если вы хотите продолжить свой сценарий, вы можете отредактировать свое приложение, чтобы оно отобразило параметры из адресной строки. http://www.helmutgranda.com/?logNum=12345 Теперь вы можете динамически читать журналы без необходимости редактировать текстовый файл, и вы даже можете отправить его другим людям. –

+0

еще одна вещь, которую я забыл прокомментировать, состоит в том, что на самом деле вы можете передать параметр для загрузки треков. после события loadedLogNum вы можете сделать следующее: loadTracks (e.target.data.logNum); // это грязно, но только для того, чтобы доказать точку в loadTracks. Функция loadTracks (_logNum: String): void { tracksLoader.load (новый URLRequest (_logNum + ". Log")); // (*) ... И УСТАНОВИТЬ logNum ЗНАЧЕНИЕ ЗДЕСЬ } –

+0

Большое вам спасибо, это сработало !! О взятии параметров из адресной строки, этот скрипт загружает .log из другого приложения (оно используется для локального использования), поэтому я думаю, что этот параметр не нужен. Еще раз спасибо! – Pablo

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