akihiro kamijo先生のブログ記事(2008/12/18)に
>OS に依存しない AIR アプリケーションを
>開発するためのベストプラクティスが
> US のサイトに公開されています
>Developing cross-platform Adobe AIR applications
と書かれていましたので読んでみました。
手短に要約すると、以下のようになります。
AIRアプリケーションは、AIRランタイムが動作する(Win/Mac/Linux)環境で実行できるが、OSにより、サポートする機能が異なるため、それらの機能が使えるかどうか確認してから実行するような処理が必要とのこと。このとき、Capabilities.osでOS判定するのでなく、各機能毎に用意されているサポートしているかどうかを保持しているプロパティを確認するのがポイントです。
例えば、Weather Report AIRでもやってしまったのですが、どのOSでもNativeWindowの透過をサポートする訳ではないので、NativeWindow.supportsTransparencyプロパティ(true/false)をチェックして、処理を分けるなどしないといけません。さもないと、透過をサポートしない環境で、透過領域が真っ黒に表示される結果となってしまいます。
他にも、以下のプロパティについてもコメントされていました。
-
NativeApplication.supportsDockIcon(アプリケーションドックアイコン)
-
NativeApplication.supportsMenu(グローバルアプリケーションメニューバー)
-
NativeApplication.supportsSystemTrayIcon(システムトレイアイコン)
-
NativeWindow.supportsMenu(ネイティブのウィンドウメニュー)
-
NativeWindow.supportsTransparency(透明なピクセルが指定されたネイティブウィンドウ)
-
File.applicationDirectory(インストールされたアプリフォルダ)
-
File.desktopDirectory(ユーザーのデスクトップディレクトリ)
-
File.documentsDirectory(ユーザーのドキュメントディレクトリ)
-
File.userDirectory(ユーザーのディレクトリ)
-
File.separator(パスの区切り文字)
-
File.getRootDirectories(ファイルシステムのルートディレクトリ)
-
File.lineEnding(行終了文字)
アプリ/ネイティブウィンドウ/ファイルなど、OSに近い機能を使用されている方は、原文を御一読されると、きっと役に立つと思います。
