2011-02-05 130 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检测位和逻辑语句。

我希望有人认为这有用!