Flash 如何检测空中目录下的任何文件更改?
我见过使用计时器、获取文件列表并检查每个文件的更改的示例,但是有没有更简单的方法来实现这一点,例如Flash 如何检测空中目录下的任何文件更改?,flash,actionscript-3,file,air,directory,Flash,Actionscript 3,File,Air,Directory,我见过使用计时器、获取文件列表并检查每个文件的更改的示例,但是有没有更简单的方法来实现这一点,例如 <mx:FileSystemList id="fs" visible="false" /> private function onCreationComplete():void { fs.directory = File.applicationDirectory.resolvePath('../../assets'); if (fs.directory.exists)
<mx:FileSystemList id="fs" visible="false" />
private function onCreationComplete():void
{
fs.directory = File.applicationDirectory.resolvePath('../../assets');
if (fs.directory.exists)
addEventListener(FileEvent.DIRECTORY_CHANGE, onDirectoryChange);
}
private function onDirectoryChange(e:FileEvent):void
{
trace("file was changed");
}
当文件更改时,这似乎不会触发使用FileMonitor类 教程中的代码:
import com.adobe.air.filesystem.FileMonitor;
import flash.filesystem.File;
import flash.events.Event;
import com.adobe.air.filesystem.events.FileMonitorEvent;
private var monitor:FileMonitor;
private function onSelectButtonClick():void
{
var f:File = File.desktopDirectory;
f.addEventListener(Event.SELECT, onFileSelect);
f.browseForOpen("Select a File to Watch.");
}
private function onFileSelect(e:Event):void
{
var file:File = File(e.target);
if(!monitor)
{
monitor = new FileMonitor();
monitor.addEventListener(FileMonitorEvent.CHANGE, onFileChange);
monitor.addEventListener(FileMonitorEvent.MOVE, onFileMove);
monitor.addEventListener(FileMonitorEvent.CREATE, onFileCreate);
}
monitor.file = file;
monitor.watch();
}
private function onFileChange(e:FileMonitorEvent):void
{
trace("file was changed");
}
private function onFileMove(e:FileMonitorEvent):void
{
trace("file was moved");
}
private function onFileCreate(e:FileMonitorEvent):void
{
trace("file was created");
}
使用FileMonitor类 教程中的代码:
import com.adobe.air.filesystem.FileMonitor;
import flash.filesystem.File;
import flash.events.Event;
import com.adobe.air.filesystem.events.FileMonitorEvent;
private var monitor:FileMonitor;
private function onSelectButtonClick():void
{
var f:File = File.desktopDirectory;
f.addEventListener(Event.SELECT, onFileSelect);
f.browseForOpen("Select a File to Watch.");
}
private function onFileSelect(e:Event):void
{
var file:File = File(e.target);
if(!monitor)
{
monitor = new FileMonitor();
monitor.addEventListener(FileMonitorEvent.CHANGE, onFileChange);
monitor.addEventListener(FileMonitorEvent.MOVE, onFileMove);
monitor.addEventListener(FileMonitorEvent.CREATE, onFileCreate);
}
monitor.file = file;
monitor.watch();
}
private function onFileChange(e:FileMonitorEvent):void
{
trace("file was changed");
}
private function onFileMove(e:FileMonitorEvent):void
{
trace("file was moved");
}
private function onFileCreate(e:FileMonitorEvent):void
{
trace("file was created");
}
对我知道那种方法。它使用一个计时器并检查文件,它只支持一个文件。那太可笑了。不幸的是,我认为您运气不好,除非您编写了一个本机可执行文件,它可以实际监视文件系统并使用本机进程API与之交互。但是我必须注意,最有可能的本机解决方案还包括某种计时器功能,或者需要接收事件,也由某种计时器功能生成的事件。原因很简单,就是可执行进程的性质。它们通常可以归结为一个无限循环,允许并检查状态变化。AIR 3将允许本机可执行文件,即Windows的DLL。坚持住,十月初就应该出来了。我想你是糊涂了。AIR3将允许捆绑运行时,因此您可以将AIR运行时捆绑到可执行安装程序包中。AIR 2.0已经允许您从actionscript运行本机可执行文件。是。我知道那种方法。它使用一个计时器并检查文件,它只支持一个文件。那太可笑了。不幸的是,我认为您运气不好,除非您编写了一个本机可执行文件,它可以实际监视文件系统并使用本机进程API与之交互。但是我必须注意,最有可能的本机解决方案还包括某种计时器功能,或者需要接收事件,也由某种计时器功能生成的事件。原因很简单,就是可执行进程的性质。它们通常可以归结为一个无限循环,允许并检查状态变化。AIR 3将允许本机可执行文件,即Windows的DLL。坚持住,十月初就应该出来了。我想你是糊涂了。AIR3将允许捆绑运行时,因此您可以将AIR运行时捆绑到可执行安装程序包中。AIR2.0已经允许您从actionscript运行本机可执行文件。