另一個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檢測位和邏輯語句。
我希望有人認爲這有用!
FAT32應該是完全沒問題的。你有關於IOError的更多信息嗎? – Ben 2011-02-05 02:17:40