2010/11/04

もうそろそろAIR for Androidについて書いておくか(ただしFlash CS5)

実はプレリリースの時に、いくつかサンプルをつくってみたりしたんですが、2.2端末が少ないこともあり放置していました。
最近、AndroidマーケットでAIRが配布開始されたり、SBMのAndroidが全機種2.2だったり、Adobe MAXの影響か、Flexの方面からの盛り上がりを感じているので、AIR for Androidについて書いておきたいと思います。

1.環境構築
Adobe CS5を普通にインストールしてあって、アップデートで最新状態であれば、FlashのエクステンションをインストールすればOKです。
つまり、下記の3つが必要になります。
・Flash CS5
・AIR2.5
・Flashエクステンション(ベータなのでAdobe Labsから)

2.アプリをつくる
正しく環境構築ができていれば、Flash CS5に 新規>テンプレート>AIR for Androidが追加されています。
このテンプレートを使って作業します。
普通にFlashをつくります。フルAS3でもタイムラインを絡めてもいいです。
UI構築が自由にできるのがいいですね。

3.パブリッシュ(apkファイルの作成)
ファイル>AIR Android設定... で専用画面がでますので、ここで諸々設定します。(今回は詳細は割愛します)
※実機をもっていれば、Flashから直接転送デバッグも可能です。

でもって、こんなのをつくってみました。
西暦を和暦に変換するアプリです。

.flaファイルに記述しているActionScriptは以下のような感じです。
普通にMouseEventを記述すれば、Android上のタッチイベントになります。
import flash.events.MouseEvent;

btn_0.addEventListener(MouseEvent.CLICK, inputNum("0"));
btn_1.addEventListener(MouseEvent.CLICK, inputNum("1"));
btn_2.addEventListener(MouseEvent.CLICK, inputNum("2"));
btn_3.addEventListener(MouseEvent.CLICK, inputNum("3"));
btn_4.addEventListener(MouseEvent.CLICK, inputNum("4"));
btn_5.addEventListener(MouseEvent.CLICK, inputNum("5"));
btn_6.addEventListener(MouseEvent.CLICK, inputNum("6"));
btn_7.addEventListener(MouseEvent.CLICK, inputNum("7"));
btn_8.addEventListener(MouseEvent.CLICK, inputNum("8"));
btn_9.addEventListener(MouseEvent.CLICK, inputNum("9"));

btn_c.addEventListener(MouseEvent.CLICK, clearAll);
btn_enter.addEventListener(MouseEvent.CLICK, calc);

function inputNum(num:String):Function {
	return function(e:MouseEvent){
		ad.appendText(num);
	} 
}

function clearAll(e:MouseEvent):void {
	ad.text = "";
	wareki.text = "";
	opt.text = "";
}

function calc(e:MouseEvent):void {
	if(ad.text.length == 4){
		var n:int = int(ad.text);
		if(n>=1868 && n<=2100){
			var year:int;
			if(n<1912){
				year = n - 1868 + 1;
				if(year == 1){
					wareki.text = "明治元年";
				}else{
					wareki.text = "明治" + year + "年";
				}
			}else if(n<1926){
				year = n - 1912 + 1;
				if(year == 1){
					wareki.text = "大正元年";
					opt.text = "※1912年 明治45年7月29日まで、7月30日より大正元年";
				}else{
					wareki.text = "大正" + year + "年";
				}
			}else if(n<1989){
				year = n - 1926 + 1;
				if(year == 1){
					wareki.text = "昭和元年";
					opt.text = "※1926年 大正15年12月24日まで、12月25日より昭和元年";
				}else{
					wareki.text = "昭和" + year + "年";
				}
			}else{
				year = n - 1989 + 1;
				if(year == 1){
					wareki.text = "平成元年";
					opt.text = "※1989年 昭和64年1月7日まで、1月8日より平成元年";
				}else{
					wareki.text = "平成" + year + "年";
				}
			}
		}else{
			wareki.text = "範囲外です";
		}
	}else{
		wareki.text = "4桁入れてね";
	}
}

/*
明治 1868年〜
大正 1912年〜
昭和 1926年〜
平成 1989年〜

1912年 明治45年7月29日まで、7月30日より大正元年
1926年 大正15年12月24日まで、12月25日より昭和元年
1989年 昭和64年1月7日まで、1月8日より平成元年
*/
普通につくったFlash/ActionScriptがAndroidで動きます。感動です。
場合によってはJavaで開発するよりも簡単かも知れません。逆にメニューキーを押したあと(イベントは取れます)の実装はすべて自前?とか、普通のAndroidアプリと似せようとすると面倒かもしれません。ゲームとか標準のUIに縛られないアプリなら良さそうです。

今後2.2端末も増えそうですし、開発の選択肢に検討してみるのもいいかもしれません。
問題はAIRランタイムの容量が大きいことだったり。。。

0 件のコメント:

コメントを投稿