这是一个脚本,该脚本加载指定的.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) {
}
}