[AS3] AIRでも使える! 初めてのMVC入門

2013/12/18

こんにちは。きんくまです。

この記事はAdobe AIR Advent Calendar 2013の18日目の記事です。

AIRの記事を書こうとしたのですが、AS3の話題でもギリギリセーフかなと思いMVC入門記事を書こうと思います。

一応、その前にAdvent CalendarのAIRの方も触れておきます。

AIRネタ

お仕事でモバイル(iOS/ Android)のAIRアプリを作ってます。
AIRはあんまり知らない人もいると思うので、基本的なことを書くと

デスクトップ(mac / Win) / モバイル (iOS / Android)向けに1ソースで作れます。
(実際は最適化の必要があるので、部分的な切り分けは必要です)

モバイルの場合は、デスクトップと比べてパフォーマンスを気にする必要があります。
何も気にしないと、すんごく遅く表示されて「何これ、使えね!」となります。

なので、まず表示リストをどちらでいくのか決めます

・従来のAS3 Display List(Sprite, MovieClip)
・Stage 3D

■従来のAS3 Display List

・これまでWebページでずっと使われてた
・激しい動きのないもの(ツール系など)に向いている
・レンダリングモードはGPUがいいかも
(CPU,Directモードはコンテンツによっては最適だったりするので、試してみて速かったらそちらにするという感じがいいと思います。)
・Flashのタイムラインを使った開発ができる

■Stage 3D

・GPUを使って描画を速くする
・ゲーム系に向いている
・レンダリングモードはDirect
・Flashのタイムラインを使った開発がしづらい
・レイアウトは基本プログラムで行い、テクスチャを作って絵を読み込む
・ライブラリは2D -> Starling. 3D -> Away3Dが有名

という感じです。Stage 3Dは早いのですが、その分開発に若干時間がかかります。あと、ツール系は苦手です。

で、従来の方だとツール系アプリを作るときに、UIまわりを自前で作ってもよいのですが、もしiOS, AndroidのネイティブっぽいUIを作りたいときは、ライブラリの候補としてMadComponentsがあります。
この間、何かいいのないかなーと探していたら見つけました。実際にちょっと前の端末のiPhone4(Sでなく)で動かしてみたところ、30fpsぐらいは出ていたので、1ソースでiOS/Android両対応のアプリを作りたいのだとしたら、現実的な落としどころだと思います。
正直Stage3DのUIを作るライブラリのFeathersは、あんまり好きになれなかったのですが、こちらはぱっと見の印象として頑張ってみようかなという気になりました。実際に使ってみた後、またブログに書こうと思います。

あ、そうです。iOSにはAppストアに出さずに、企業内の閉じた環境でだけアプリを配ることができるEnterpriseライセンスというものがあります。
この間、これを使って納品まで済ませましたので、そういった業務で使うアプリの開発も大丈夫です。

と、ここまでがAIRの話題でした。

MVCって何?

さてここからがMVCの話題です。

この投稿の続きを読む »

LINEで送る
Pocket

[Android | AIR] パッケージ名を確認する。あとAIRから書き出したアプリケーションIDの変換法則とか

2013/11/30

こんにちは。きんくまです。

これは取引先の人に教えてもらったのだけど、Androidのapkファイルからパッケージ名などの情報が確認できるみたい。
AndroidのSDKをどこかにダウンロードしてあるとして、その中にapptなるツールがあります。

自分の場合だと、

SDKへのパス/sdk/build-tools/android-4.2.2/aapt

に入っていました。

で、それを使って中身を見ます。

aapt dump badging xxxxx.apk

>> android パッケージ名 バージョン 確認 – peroon’s diary

または、別のコマンドで詳細に見るには

aapt l -a xxxx.apk

そうするとpackageのところにパッケージ名が書いてあります。

AIRから書き出したアプリケーションIDがAndroidのパッケージ名に変換される

で、AIRから実際に書き出したパッケージ名を見てみます。

もしAIR用の設定ファイル xxxxx-app.xml の中でアプリケーションIDを

<id>com.foo-bar.myapp</id>

というふうにハイフンつきで指定すると、パッケージ名は

air.com.foo_bar.myapp

とアンダーバーに変更されてました。あと先頭にairが追加されます。

じゃあ、今度はAIR用の設定ファイルでアンダーバーをつけたアプリケーションIDを使うとどうなるかというと、これはエラーで書き出せませんでした。

アンダーバーと、ハイフンはiOS, Androidでそれぞれ使える、使えないというのがあるみたいです。
アンダーバー _ はiOSのAppIDだと使えない。
あと、今度はハイフン – はAndroidだと使えない。

>> iPhone/Android両対応アプリを作る際にハイフンを含んだApp IDを使うとき

AIRのxmlのIDが、Androidではいろいろと変換とか追加されちゃいましたけど、iOSはプロビジョニングファイルのアプリケーションIDと一致してないとはじかれるので、そのまま使われていると思います。

おまけ

ターミナルのコマンドで一時的に使いたくて、/usr/local/binとかにエイリアスをわざわざおきたくないとき。

エイリアス名=フルパス

としておくと便利です。一時的にターミナル内で変数として使えます。ターミナルを終了しちゃえば残らないです。
設定時 =の前後にスペースは空けないことに注意です。
今回のaaptコマンドだったら

myaapt=SDKへのパス/sdk/build-tools/android-4.2.2/aapt

という感じです。使い方はエイリアス名に$をつけます。

そうすれば、apkファイルのおいてあるディレクトリに行ったあとに

$myaapt dump badging xxxxx.apk

とできます。で、じゃあこのコマンドのもともとはどこなの?ていうときは

which $myaapt

とやると、もとのフルパスが表示されます。

LINEで送る
Pocket

[AS3] FeathersのScreenNavigatorをiOSのUINavigationControllerっぽく使いたい

2013/11/20

こんにちは。きんくまです。

FeathersにScreenNavigatorっていう、画面を切り替えるクラスがあります。
iOSでいうところのUINavigationControllerです。

で、使い方を調べていたのだけど、クラス名を登録して、ScreenNavigatorの方にインスタンス化をお願いするというのがデフォルトの使い方らしいです。

>> How to use the Feathers ScreenNavigator component

でも、自分としては、UINavigationControllerっぽくインスタンス化したのをpushしたいです。で、画面を戻るときはpopしたいです。
ぐぐったところ同じことを考えている人がいました。

>> ScreenNavigator history functionality

で、特にライブラリ側に手をいれないで、ScreenNavigatorを拡張したクラスを作りました。

この投稿の続きを読む »

LINEで送る
Pocket

[AS3] AIRでJSONテキストファイルの入出力をしたい

2013/11/14

こんにちは。きんくまです。

AIRでアプリのデータを保存するときにJSON形式のテキストデータを使おうと思いました。
それで、以前はas3corelibっていうライブラリを使えば良かったのですが、AIRの3.0からはネイティブでJSON形式が扱えるようになってました。

>> JSON – AS3
>> Using native JSON functionality

クラスメソッドさんのところに詳しく載ってました
>> Flash Player 11で追加されたJSONクラスのパフォーマンスと機能

それで、上の記事にもあるように、JSON. stringify()、 JSON. parse()の第二引数に関数を書いてもよいのですが、
自作クラスが入れ子になっていると、その関数が大きなものになっちゃいます。
なので、できれば分割して書きたいなと。

この投稿の続きを読む »

LINEで送る
Pocket

[日記] AIRのFeathersとか

2013/11/12

こんにちは。きんくまです。

なんだか夏からあわあわとしていて、今に至ります。
もう少しで落ち着きそうなんですけど。

Feathers

AdobeのAIRって知ってますか?
このブログをどんな人が見ているのかわからないので1行で説明すると
「Flashコンテンツをいろんなデバイス向けに書き出す技術」です。

例えば、同じコンテンツをiOSやAndroidのモバイル向けに書き出したり、MacやPC向けにも書き出せます。
えっと、それってhtmlコンテンツ?とかって思う人もいるかもしれませんが、違います。

ActionScript3で書いたコンテンツを書き出すとモバイルでは

iOS向け -> ネイティブコード(CかObjective-Cみたいな。ひょっとしたらもうちょっと低いレイヤーのものかも)に置き換わります
Android向け->Airランタイム用に(Javaには置き換わりません)

AndroidのAirランタイムってなんなのかっていうと、ネイティブ環境の上で乗っかるファミコンの本体みたいなものです。
で、ファミコンのカセットがコンテンツごとに書き出される感じです。

iOSの方は、Appleの規約でそういうランタイム使っちゃ駄目。ってなってるので、コードをごっそり置き換える必要があります。

で、いまはFlashも技術的に大きく2つに分かれます。
以前からあるものと、Stage3Dです。

と、ここまで書いていて思ったのだけど、これ長くなりそうですね。
説明しなきゃいけないことが多すぎる。

そりゃとっつきにくいよなー。

いろいろと端折ってFeathersのはなし。

FeathersっていうのはStage3D用の2Dのコンポーネント集です。

>> Feathers

ボタンとか、スクロールビューみたいな。iOSでいうUIKitみたいな。そういうのです。
で、もとから入っているのじゃなくて、自分でテーマというかスキンというか、そういうのを作って見た目を変更できます。

feathers_fig

フォントを埋め込むか、デバイスフォントにすれば日本語も使うことができます。

これのテーマを作る方法がわかるまでが長かったです。
というか、理解すればそういうことかーという感じなのだけど、いろいろと知っとく必要のあることが多くて。

ちなみにドキュメントによると、テーマは必須じゃないようです。
都度スタイルを適用してもよいみたい。、、なんだけど、ひとつのコンポーネントにスタイルをつけるのに書くコードが長過ぎる!!!
なので再利用しやすいようにテーマを作った方がよいと思う。

あと、Retina対応もできます。ネイティブのiOSの方でもそうだったけど、面倒ですね、、。

愚痴ってますけど、iOS / Android両対応でなんとかしたいときにAIRは便利です。

光ケーブル

はなしはかわって、ケーブルのはなし。

ふだん音楽を聞くときに、Macのイヤホン端子をコンポの外部入力端子につなげて聞いてます。
で、iTunesで曲を操作すると。

それで、この間ふと掃除してるときにコンポの後ろを見たら、光デジタル入力端子を発見しました。
そのときふと、そういえば「Macはイヤホン端子から光デジタル出力ができる」とどこかで読んだのを思い出しました。

なので、試しにケーブルを買ってきてつなげてみました。
そしたらちゃんと音が鳴りました。

音質は上がったと思います。結構くっきり聞こえるようになったような。
それよりアナログのときより、なんでかアンプの音量を大きくしなくても、よく聞こえるようになりました。

LINEで送る
Pocket

[iOS] Habit Keeper iOS7対応版の修正版をリリースしました

2013/09/26

こんにちは。きんくまです。

先日アップしたHabit KeeperのiOS7の対応版なのですが、何点かタイトルまわりのバグがありました。
ご迷惑おかけしました。
それで、修正したものを申請してまして、本日審査がおりましたのでリリースしました。

何卒よろしくお願いします。

LINEで送る
Pocket

[iOS] Habit Keeper iOS7対応版リリースしました

2013/09/19

こんにちは。きんくまです。

日課管理アプリのHabit KeeperのiOS7対応版が無事リリースされました。

有料版は間に合ったので大丈夫だったのですが、無料版は、審査がiOS7のリリースに間に合いませんでした。
なので、一時的にストアから下ろしていまして。(ていっても数時間だけど、、)
そしたらさきほど、審査が通りましたので、もう一度アップしました。

よろしければどうぞ。

>> 日課や習慣をサクサク記録!- Habit Keeper – iTunes – Apple

こちらは無料版です。

>> 日課/習慣/ルーチンワークをサクサク記録!- Habit Keeper Free

LINEで送る
Pocket

ページトップへ戻る