nok*_*nal 6 air filesystems operating-system actionscript-3
另一个Adobe Air的问题,但首先是我的任务背景.它是一个AIR应用程序,它将从USB密钥读取资产,并且必须在WIN和MacOS上运行.问题是,如何在MacOS上将资源加载到应用程序中!听起来很简单,可以在Windows上无缝运行.
这是我想要做的代码片段:
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));
Run Code Online (Sandbox Code Playgroud)
...变量OS和keyVolume正在早期代码中成功设置.此外,我还为ok()和ioErro()定义了事件监听器回调.
运行时,它会在Windows上打印出来:
试图加载:G:\ 0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
它是否存在:true
...然后成功加载资产.
在MacOS上,它打印出来:
试图加载:/Volumes/AC/0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
它是否存在:true
...然后每次都失败并出现IOError.
谁能看到我在这里失踪的东西?我是否有某种权限错误或某些内容(文件具有"读/写"访问权限).USB密钥格式化为MS-DOS FAT32,这可能是个问题吗?
编辑
我将MacOS中的新USB密钥格式化为FAT16并将文件放在上面但没有成功.问题仍然存在
编辑
我现在只是尝试从/ users/-USERNAME-/Desktop加载一个资产,但仍然收到相同的错误,所以看起来它只是USB棒上的权限问题,它比这更广泛.
编辑
问题解决了!我终于正确地说出了我的谷歌搜索,它揭示了答案.
这些更改将解决问题:
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));
Run Code Online (Sandbox Code Playgroud)
我还改进了涉及OS检测的逻辑语句.
我希望有人觉得这很有用!
问题解决了!我终于正确地表达了我的谷歌搜索,它揭示了答案。
这些更改将解决该问题:
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));
Run Code Online (Sandbox Code Playgroud)
我还对涉及操作系统检测的逻辑语句进行了一些改进。
我希望有人觉得这很有用!