おめが?日記

2011-05-16

[][][]ぼくわたしのAIR for iOS/Android 02:52

f:id:o_mega:20110517025310j:image:w360

勢いのにって、iOS版をビルドして検証していたり。同一のswfにちょちょいと設定and環境依存リソース(アイコンとかスプラッシュ画面とか)を付けるだけで、とりあえず動く。何これすごい。*1

とはいえ、 Androidのようなパワフルさはなく、謎のもさもさ負荷。GPUモードにすると改善するが、割と厳しい。もちろん元々そういう用途でコード書いてないし、普段するような実装からやや外れた記述*2をしているので、その辺の何かかもしれない。そもそも解像度一致してないし

ADTの設定にはrenderModeがあり、ドキュメント曰く「デフォルトはautoだが通常はcpuになる。ただし、いろいろ描画制約が出るし、各種端末で検証してね」とある。Snapdragon世代のAndroid機、それもAIRが入るAndroid2.2以上であれば、CPUでも十分動くが、GPUは何種類かあり*3個人ですべて検証するのが難しそうだ。逆にiOSは、特に3GSのような2年前の端末では重く、renderMode=gpuを指定しないと正直残念だ。しかし、端末種類は恐ろしく少ないので検証可能だろう。

まとめるとADTの設定的には、AndroidはrenderMode=auto、iOSはrenderMode=gpuが良さそう。



現時点での課題は、アプリ終了の扱いについて。

  • AIR側からは「非アクティブ状態/アクティブ状態になったことの検知」「アプリを終了させる」しかできない
  • iOSではアプリ終了&バックグラウンドタスクAndroidでは終了&バックグラウンドの他にもインテントがあるが
    • 上記の通り、非アクティブ化イベントだけではそれぞれの判別ができない
    • そうでなくても、Twitter連携するようなことでも、iOSの場合即終了してしまうと困る。PCでは新しいタブを開くだけのことなのに…
  • AIRドキュメント曰く「適時データ保存して、自力レジューム可能にしろ」
    • めんどー
    • どちらにしろリセット操作ができるべきでは
  • とりあえずを考えるとこんなん?
    • 非アクティブ状態ではできるだけ省電力状態へ行かせて
    • 非アクティブ状態では、てきとーにアプリが終了するだろうけど、現状はキニシナイ(゚ε゚)*4
    • リセット操作UIを追加

かねえ。落とし所はー


まあ、そのうち魅惑のWriteOnceRunAnyWhere開発情報を纏めよう

*1:つーか、iOS版Windows上で作れそうな勢い。やばい。そりゃジョブズ怒るわ。

*2ビットマップの色を直接呼んで接触判定している

*3:更に言えばメーカーのドライバ特性もありそう

*4:マミ復活のクリアデータはもともと保持しない想定なので

トラックバック - http://d.hatena.ne.jp/o_mega/20110516/1305568349