Adobe AIR和不同的操作系统文件系统
另一个Adobe Air问题给你,但首先在这里介绍一些我负责的项目背景。它是一个AIR应用程序,它将从USB密钥读取资产,并且必须在WIN和MacOS上运行。问题是,我如何在MacOS上将资源加载到应用程序中!听起来很简单,并且可以在Windows上无缝工作。Adobe AIR和不同的操作系统文件系统
这里是什么,我试图做一个代码片段:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
var p:String;
if (os == "mac")
{
p = "/Volumes/" + keyVolume.rootDirectory.name + File.separator + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
}
else
{
p = keyVolume.rootDirectory.name + File.separator + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
}
var temp:File = new File(p);
Debugger.Display.text += "\nAttempting to load: " + p;
Debugger.Display.text += "\nDoes it exist? " + temp.exists;
loader.load(new URLRequest(p));
...变量OS和keyVolume在前面的代码被设置成功。另外,我还为ok()和ioErro()定义了事件监听器回调。
当这个运行它打印出的窗口:
试图加载:G:\ 0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
是否存在:真
...然后成功加载资产。
在MacOS,它打印出:
试图加载:/Volumes/AC/0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
是否存在:真
...和然后每次都会发生IOError失败。
任何人都可以看到我在这里失踪的东西吗?我是否有某种权限错误或什么(文件具有“读取/写入”权限)。 USB密钥格式化为MS-DOS FAT32,这可能是一个问题吗?
编辑
我格式化在MacOS上为FAT16新的USB钥匙,并把文件到它,但没有成功。问题依然存在
编辑
我现在只是想从/用户/ -USERNAME- /桌面加载资源,仍然有收到同样的错误,所以它看起来是不是只是权限问题USB棒,它比这更广泛。
编辑
问题解决了!我终于在我的谷歌搜索上写下了正确的文字,并且它revealed the answer。
这些变化将解决这个问题:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
var p:String = keyVolume.rootDirectory.nativePath + ((os == "mac") ? File.separator : "") + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
var temp:File = new File(p);
Debugger.Display.text += "\nAttempting to load: " + temp.url;
Debugger.Display.text += "\nDoes it exist? " + temp.exists;
loader.load(new URLRequest(temp.url));
我还细化涉及OS检测位和逻辑语句。
我希望有人认为这有用!
问题已解决!我终于在我的谷歌搜索上写下了正确的文字,并且它revealed the answer。
这些变化将解决这个问题:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ok);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
var p:String = keyVolume.rootDirectory.nativePath + ((os == "mac") ? File.separator : "") + "0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg";
var temp:File = new File(p);
Debugger.Display.text += "\nAttempting to load: " + temp.url;
Debugger.Display.text += "\nDoes it exist? " + temp.exists;
loader.load(new URLRequest(temp.url));
我还细化涉及OS检测位和逻辑语句。
我希望有人认为这有用!
FAT32应该是完全没问题的。你有关于IOError的更多信息吗? – Ben 2011-02-05 02:17:40