mieki256's diary



2012/09/13(木) [n年前の日記]

#1 [as3][starling][android] Android実機でStarlingを使ったAIRアプリを動かしてみたり

Lenovo IdeaPad A1 に、Starlingを使ったAIRアプリを転送して動作確認。

さっくり60FPSが出るかと期待してたけど全然ダメだった。20FPS前後をふらふら。色々試してみたけれど、そもそも何も表示してない状態ですら50FPSに達しない。これでは下手すると、Starlingを使わずに、旧来のFlashの描画の仕方でも良かったのではないか。たしか Haxe を使って動作確認した際も、このくらいのガクガク具合で動いていたような…。

最新、かつ、そこそこ強力なスペックを持つAndroid端末上で動かせば、Starling を使うことで速度が改善する可能性はあるのかもしれないけど。ヘボい中華Padモドキでは効果がよく分からないという結果になりそうな。

一応、デバッグ用にビルドした .apk を転送したら、起動時に「OpenGL」という文字列が送られてきたので、そのあたりを使って描画してるんだろうけど…。もしかすると、OpenGL を使うと30FPSで頭打ちになるハードウェアなのかしら。昔の端末はそういう仕様だったとどこかで見かけた記憶もあるし。また、Starling関係のサンプルを眺めていると、mobile用(iOS、Android)のソレは、えてして30FPSが指定されてあるものが多いし。スマートフォンなのに60FPSを要求するほうがおかしい…?

ひとまず、試したアレコレをメモ。
Starling の viewPortその他で画面拡大を任せず、root相当のSpriteを自前で計算して拡大縮小してみた。
速度はどちらも変わらなかった。もしかすると Starling 内部でも同じことをしているのかもしれない?
一番奥・画面全部を覆う背景を、グラデーションのQuad(矩形)で描画していたけど、それをImage(テクスチャ付きのQuad)に変更してみた。
微妙に速くなった。どうやら、Quad より Image のほうが速いらしい。特定色で塗り潰しをしているだけの Quad のほうが速いんじゃないかと予想してたけど、なんだか意外。ビットマップデータをひたすら転送するほうがまだ速いのだろうか。
半透明の指定(Quad.alpha や Image.alpha 等)を極力無くした。
微妙に速くなった。
基準画面サイズを、480x320から320x240にしてみた。
微妙に速くなった。

実機で動かして分かったこと。 :

実機で動かしたら、指でタップした位置と、実際に取得された座標にずれがあって悩んでしまった。例えば、左手の親指でバーチャルパッドの中心を押さえたつもりが、少し左下の位置が押されたものと判別されているようで。まあ、実際に触れているのは、親指の先・中心ではなくて、少し根元に近いほう、ということだろうけど。触ってる人間が期待しているソレと、端末が取得してる情報の間にはずれがある、ということなのかな。

何かこのあたり、細かい一工夫が必要になりそう。本来は、こういうのもキャリブレーション?する機能を入れるべきなんだろうけど。

知らない間にキャリブレーションすることもできなくはない、かもしれない。アプリ開始時から何度か各ボタンをタップさせるうちに、ボタンの中心位置からのずれを平均値にして持っておいて後で使うとか? ユーザは、ボタンをタップする際に、えてして真ん中を叩いているつもりのはず、と仮定したり。しかし、右手の人差指でタップするのと、左手の親指で押すのでは、触れる部分が違うはずで…。

#2 [as3][flash][starling] FlashDevelop 上からAndroid端末にAIRアプリを転送する手順をメモ。

AIR_Android_readme.txt を読めば書いてあるけど。一応メモ。環境は Windows7 x64 + FlashDevelop 4.0.4 + Flex 4.6.0 + AIR 3.4。
  1. 端末とPCをUSBケーブルで繋ぐ。(PC側にドライバ等はインストール済みで、端末側の開発用設定はそれぞれチェックを入れてあること。)
  2. コマンドプロンプトで、adb devices と打つ。devices が表示されたら繋がってる。
  3. FlashDevelop 上でビルド(F8キー)。構成の選択で「リリース」「デバッグ」が選べる。「リリース」は本番用ビルド。「デバッグ」は開発時用で、PCとAndroidでアプリの動作状況をやり取りできるが、アプリの動作が遅くなる。アプリの動作速度が妙に遅い時は「デバッグ」でビルドしてないか確認する。
  4. PackageApp.bat を実行して .apk を作る。「何用のバイナリを作る?」と尋ねてくるので、Android用のどれかを選ぶ。dist/ フォルダ以下に .apk が作成される。ちなみに、FlashDevelop 上で、.bat を右クリックして「実行」を選べば実行できる。
  5. Run.bat を編集して、Android実機に .apk を転送できるようにする。goto android-test か goto android-debug のどちらかを有効にして、他はコメントアウト。行頭に「::」をつければコメントアウトできる。
  6. Run.bat を実行して、Android実機に .apk を転送。転送終了すると自動的にアプリが起動する。

ついでに、Android用AIRアプリを作る際の手順もメモ。
  1. FlashDevelop 上で、新規プロジェクト作成。AIR Mobile AS3 App を選択。
  2. bat\SetupSDK.bat を修正。FLEX_SDK、ANDROID_SDK を、自分の環境に合わせたパスに変更。
  3. ソースを書く。ビルドする(F8キー)。テスト実行する(F5キー)。初期状態では、PC上で Flash Player が起動する状態になってるはず。
  4. FlashDevelop 上で、bat\CreateCertificate.bat を実行。何かの証明書ファイルを作るらしい。そのプロジェクトで1回作っておけばOK。


ついでに、Starling を使う時の手順もメモ。

#3 [as3][flash] AS3で条件付きコンパイル

ActionScript3 で条件付きコンパイルってできないのかなと思って検索。

_ActionScript 3.0 の条件付きコンパイル - akihiro kamijo
_ActionScript 3.0 の 条件付きコンパイル - Digital SeeTake
_条件付きコンパイル - FlashDevelop 用 AS 3 サンプル集
_newbie on xxx(scala,iphone,objective-c,ajax,javascript,html and more...): ActionScript3で条件付きコンパイル(Flash Develop)
メニューの「Project→Properties→Compiler Optionsタブ→Additional Compiler Options」に
-define=CONFIG::DEBUGTEST.true
 と設定する。trueの部分をfalseにすると条件付きコンパイル部分を実行しなくなる

newbie on xxx(scala,iphone,objective-c,ajax,javascript,html and more...): ActionScript3で条件付きコンパイル(Flash Develop) より



未定義だったらここを有効/無効にする、みたいな書き方が見つからず。そういうのはできないのかな…。

以上、1 日分です。

過去ログ表示

Prev - 2012/09 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project