AS3 / Flash, как сделать кнопку для просмотра и загрузки динамических текстовых файлов внутри этого кода? - PullRequest
0 голосов
/ 18 ноября 2010

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

Поскольку проигрыватель создает новые файлы .log через определенное время, мне нужно вручную выбрать последний файл .log при запуске .swf или при его изменении во время сеанса. Я открываю файл trackLogNum.txt и записываю туда раздел 5 NUMBER (переменная logNum) структуры имени файла .log, то есть 127.0.0.1,12345.log

Есть ли способ реализовать кнопку в этом коде, чтобы просмотреть файлы .log в каталоге, а затем выбрать и загрузить самый последний, вместо того, чтобы записывать каждый раз имя файла во внешнем trackLogNum.txt

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

Заранее благодарю за помощь.

var reload:Timer = new Timer(5000, 1); 
reload.addEventListener(TimerEvent.TIMER, onTimer); 

//--------------------

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

function loadedLogNum(e:Event):void {

     trace(e.target.data.logNum);
        _logNum = e.target.data.logNum;
        loadTracks();
    }

//--------------------

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("127.0.0.1,"+_logNum+".log")); 
}

function parseTracks(data:String):void {
    try {
        var lines:Array = data.split("\n"); 
        var lastLine:String = lines[lines.length - 2]; 
        var artistAndSong:String = lastLine.substr(24).split(" - ").join("\n\n->");
        trace(artistAndSong);
        track_info.text = artistAndSong; 
        addChild(track_info);
    } catch(e:Error) {

    }
}

1 Ответ

1 голос
/ 18 ноября 2010

Существует flash.filesystem , доступная для Actionscript 3.0, которая предлагает некоторые интересные классы для просмотра каталога. К сожалению, в основном по соображениям безопасности, он доступен только при компиляции вашего проекта с использованием AIR. Рассматривали ли вы создание приложения AIR вместо обычного swf?

Чтобы использовать пакет файловой системы (и иметь возможность просматривать файлы журналов в браузере), вам необходимо преобразовать приложение в приложение AIR. Вы можете сделать это, изменив настройки публикации:

alt text

Я нашел хороший пример о том, как просматривать все файлы на рабочем столе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...