2011-02-05 6 views
6

Adob​​e Airのもう1つの質問ですが、ここでは最初に私が担当しているプロジェクトの背景について説明します。 USBキーからアセットを読み込むAIRアプリケーションで、WINとMacOSの両方で動作する必要があります。問題はMacOS上でアプリにアセットを読み込む方法です。 Windowsではシンプルに聞こえ、シームレスに動作します。ここでAdob​​e AIRとさまざまなOSファイルシステム

は、私がやろうとしています何のコードスニペットです:

  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:

をロードしようと:これは、それがWindows上でプリントアウト実行され

\ 0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
は、それが存在しない:真

...資産を正常にロードします。 MacOSで

、それはプリントアウト:ロードしようとし

:/Volumes/AC/0a0ff0ff-f7ae-4b9c-9637-843b1d6c80e8.jpg
は、それが存在する:真

を...とそのたびにIOErrorが失敗します。

誰かが私がここで紛失しているものを見ることができますか?何らかのパーミッションエラーがありますか(ファイルには「読み取り/書き込み」アクセス権があります)。 USBキーはMS-DOS FAT32でフォーマットされていますが、それは問題でしょうか?

EDIT

私はFAT16にMacOSの中に新しいUSBキーをフォーマットしていない成功を収めてその上にファイルを置きます。問題は残っている。

EDIT

それだけでアクセス許可の問題ではないように見えるので、私は、今だけのユーザー/ -USERNAME- /デスクトップ/から資産をロードしようとしていますし、まだ同じエラーが発生しますUSBスティック、それはそれより広く普及しています。

EDIT

【課題!私は最終的に私のGoogle検索を正しく言いました。それは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

+0

パスの "AC"の違いは何ですか? – Ben

+0

MacOSの "AC"はドライブ名です。それは、ドライブ文字を使用するので、Windowsのパスを考慮しません。 – nokturnal

答えて

1

問題が解決しました。私は最終的に私のGoogle検索を正しく言いました。それは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の検出を含む論理的な文を洗練している:

これらの変更は、問題を解決します。

誰かがこの点を知りたがりますように!

関連する問題