Adobe AIRでの開発
HTML/JSの場合
- ランタイム・SDKのインストール(IDEを使わない場合)
- IDEを使うならaptanaとか。
- ビルドで必要なファイル
厳密にはProjNameでなくてもいい。
内容に関しては http://help.adobe.com/ja_JP/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7ecc.html を参照。- ProjName-app.xml
- ProjName.html
- AIRAliases.js (optional)
- テストする
adl ProjName-app.xml
air.trace関数でprintf debugできる。 - ビルドする
- 自己証明書の発行:http://help.adobe.com/ja_JP/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7f74.html
adt –certificate -cn '''SelfSigned''' 1024-RSA '''sampleCert.pfx samplePassword'''
- ビルド
adt -package -storetype pkcs12 -keystore sampleCert.pfx ProjName.air [必要なfiles]
- 自己証明書の発行:http://help.adobe.com/ja_JP/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7f74.html
Flexの場合
まずemacsに何もはいっていないので(as-modeすら入っていない)それらを入れる。
- actionscript-mode
- rascut (ActionScriptのコンパイル・ビルドを自動化し、ウェブブラウザに出力、log管理までやってくれる)
- 使い方は
rascut [-s:サーバモード。3001ポートを開ける] [-l /log/file/path] [-c "+configname=air":airみたいにコンパイル?] file.as
- 使い方は
RubyGemsから入れるらしいが、gemがエラー。
ERROR: While executing gem ... (Gem::RemoteSourceException)
HTTP Response 302 fetching http://gems.rubyforge.org/yaml
302、要するにサーバが移動しました。このエラーがめんどうなのはgemクライアントがサーバに問い合わせできないから更新しようにも更新すら走らない。手動でdownloadして更新。
$ curl -LO [.gem File] $ sudo gem i rubygems-update-1.3.7.gem $ sudo update_rubygems
- AIRの構成
基本は次の情報のとおりだが、FlexSDKのバージョンが高すぎると、1.0上では動作しない。したがってapplication.xmlのxmlnsを1.5などに上げる必要がある。(http://winofsql.jp/sh/html/flex3_air_check.htm)
http://help.adobe.com/ja_JP/AIR/1.1/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7fd8.html
contentにswfを指定すれば良く、そのswfは amxmlcコマンドを用いて作れば良い(sourceはasでもmxmlでもOK。一般的にはmxmlにasを埋めるのかな)。この段階まではブラウザ上でテスト可能。
豆知識
- HTMLの描画エンジンはSafariとおなじWebKitらしい
Flexからのtrace
Flexでtraceをコンソールに出すには次の組み合わせを使えばよい。
- amxmlc : -debug=true
- adl : -nodebug
まとめ:http://d.hatena.ne.jp/eggtoothcroc/20091009/1255055177
メニュー
自分の開発では使用頻度順にMac用->Win用->Linux用とつくっていけばいいだろう。AIRアプリケーションはOSサイドのメニューは使用しないのがふつうなのか?
- MXML形式で宣言できるのは Flex メニューだけ。メニューなんてほとんどstaticなんだから全部MXMLで宣言させろよ。とおもう。
- メニューのタイプ
- ApplicationMenu : OS Xのやつ
- WindowMenu : Windowsのやつ
- ContextMenu : 右クリックするメニュー
- PopupMenu : Contextに似ているが、任意の場所にdisplayできる。
- Dock/SystemTrayIconMenu
- FlexMenu : Flexによるシステム依存性の低いメニュー?コンテキストメニューとかはこれでつくっていいようだ。
- その他。
- 基本的な流れ
- 何らかの方法でmenuを作る。idを割り当てておく
- そのidにaddEventListenerする。
- eventに与えられたtypeやlabelから実行すべき処理を判定し、実行。
- Win/Macで同時に使えるようにするために
- ネイティブなメニューを使う場合。
このプロトタイプに従えばいい。var root:NativeMenu; if (NativeWindow.supportsMenu){ root = new NativeMenu(); // create new menu. WINDOWS } else if (NativeApplication.supportsMenu){ root = NativeApplication.nativeApplication.menu; // copy the present menu. OS X } //menu関係の処理
- ネイティブなメニューを使う場合。
NativeApplication.nativeApplication.menu = root;
- Flexメニューを使う場合
OS X上では本来のメニューを殺してしまうので、あまり使い勝手は良くないが、簡単に両OSサポートされる。Modification Keyが問題になるので、次の関数(keyEquivalentModifiersFunctionプロパティ)で解決する。
http://help.adobe.com/ja_JP/AIR/1.1/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7f29.html#WS5b3ccc516d4fbf351e63e3d118666ade46-7f2f
- 参考リンク
Reader:Todo
テキストファイルのD&Dを受け付けるようにする。- ルビふりできるようにする。
- 青空テキスト/XHTMLから整形式をつくる仕組みを考える。