2011-02-05 131 views
6

另一個Adobe Air問題給你,但首先在這裏介紹一些我負責的項目背景。它是一個AIR應用程序,它將從USB密鑰讀取資產,並且必須在WIN和MacOS上運行。問題是,我如何在MacOS上將資源加載到應用程序中!聽起來很簡單,並且可以在Windows上無縫工作。Adob​​e 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檢測位和邏輯語句。

我希望有人認爲這有用!

+0

FAT32應該是完全沒問題的。你有關於IOError的更多信息嗎? – Ben 2011-02-05 02:17:40

回答

1

問題已解決!我終於在我的谷歌搜索上寫下了正確的文字,並且它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檢測位和邏輯語句。

我希望有人認爲這有用!