AS3 / Flash,如何创建一个按钮来浏览和加载此代码中的动态文本文件?

最后发布: 2010-11-18 00:42:02


问题

这是一个脚本,该脚本加载指定的.log(文本)文件并在电影(当前播放的曲目中的歌手和歌曲)中动态显示其内容。

由于播放器会在一段时间后制作新的.log文件,因此我需要在启动.swf或在会话过程中更改它时手动选择最新的.log文件。 我正在做的是打开trackLogNum.txt文件,并在其中写入.log文件名结构的5 NUMBER部分(logNum变量),即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) {

    }
}
flash actionscript-3
回答

存在一个可用于Actionscript 3.0的flash.filesystem ,它提供了一些有趣的类来浏览目录。 遗憾的是,主要出于安全原因,它仅在针对AIR编译项目时才可用。 您是否考虑过创建AIR应用程序而不是普通的SWF文件?

为了使用文件系统包(并能够浏览日志文件),您将需要将应用程序转换为AIR应用程序。 您可以通过更改发布设置来做到这一点:

替代文字

我找到了一个很好的示例 ,说明如何浏览桌面上的所有文件。