<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cda244 blog</title>
	<atom:link href="http://cda244.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cda244.com</link>
	<description>flash制作者がAndroidと戦うブログ</description>
	<lastBuildDate>Sat, 17 Mar 2012 12:51:31 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>即売会にこれを持っていこう、公開しました</title>
		<link>http://cda244.com/2012/03/17-262/</link>
		<comments>http://cda244.com/2012/03/17-262/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 12:50:50 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=262</guid>
		<description><![CDATA[同人イベント系アプリ第2弾の即売会にこれを持っていこうを公開しました。1年前に公開したコミケにこれを持っていこうの発展版アプリケーションです。 ●コミケに～から変わったところ 夏・冬コミケ以外のイベントの持ち物も管理できるようになりました。 また、コミケ限定ではなくなったので、持ち物を追加する際に「共有」「夏」「冬」と選ぶ部分はなくなりました。新たに参加形式を「一般」「サークル」から選択するようになりました。フッター部分の真ん中のボタンがフィルター設定ボタンとなっていますので、表示したい形式を選ぶことができます。 ●コミケに～のデータ引き継ぎ コミケに～のデータを引き継いで使用できます。 １．コミケにこれを持っていこうをバージョン1.5.2以上にアップデートします。 ２．フッターメニュー内のデータ書き出しボタン（更新履歴ボタンとソートボタンの間）をタップします。 ３．即売会にこれを持っていこう を起動し、端末のメニューボタン → 引き継ぎ と進めます。 ４．現在のイベントリストに「夏コミ」「冬コミ」の２つのイベントが追加されます。 引き継ぎ時の仕様は以下の通りです。 ・イベントの日付は引き継いだ日に設定されます。 ・イベントの色は透明になります。 ・引き継ぎデータは追加になりますので、引き継ぎを複数回行うとその回数分イベントが増えます。 なお、即売会に～のデータをコミケに～に書き出すことはできませんのでご了承ください。 どうぞよろしくお願いします。]]></description>
			<content:encoded><![CDATA[<p>同人イベント系アプリ第2弾の<a href="https://play.google.com/store/apps/details?id=com.cda244.ceclist" title="即売会にこれを持っていこう" target="_blank">即売会にこれを持っていこう</a>を公開しました。1年前に公開したコミケにこれを持っていこうの発展版アプリケーションです。<br />
<span id="more-262"></span></p>
<h3>●コミケに～から変わったところ</h3>
<p>夏・冬コミケ以外のイベントの持ち物も管理できるようになりました。<br />
また、コミケ限定ではなくなったので、持ち物を追加する際に「共有」「夏」「冬」と選ぶ部分はなくなりました。新たに参加形式を「一般」「サークル」から選択するようになりました。フッター部分の真ん中のボタンがフィルター設定ボタンとなっていますので、表示したい形式を選ぶことができます。</p>
<h3>●コミケに～のデータ引き継ぎ</h3>
<p>コミケに～のデータを引き継いで使用できます。<br />
１．コミケにこれを持っていこうをバージョン1.5.2以上にアップデートします。<br />
２．フッターメニュー内のデータ書き出しボタン（更新履歴ボタンとソートボタンの間）をタップします。<br />
３．即売会にこれを持っていこう を起動し、端末のメニューボタン → 引き継ぎ と進めます。<br />
４．現在のイベントリストに「夏コミ」「冬コミ」の２つのイベントが追加されます。</p>
<p>引き継ぎ時の仕様は以下の通りです。<br />
・イベントの日付は引き継いだ日に設定されます。<br />
・イベントの色は透明になります。<br />
・引き継ぎデータは追加になりますので、引き継ぎを複数回行うとその回数分イベントが増えます。<br />
なお、即売会に～のデータをコミケに～に書き出すことはできませんのでご了承ください。</p>
<p>どうぞよろしくお願いします。</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2012/03/17-262/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解像度とかピクセル密度にうんざり</title>
		<link>http://cda244.com/2012/02/12-215/</link>
		<comments>http://cda244.com/2012/02/12-215/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 14:23:19 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=215</guid>
		<description><![CDATA[flash畑にいた自分がAndroidのJava畑に移ろうとしたときにまずハマったのがレイアウト（画面の作り方）。 RelativeLayoutと出会って何となく解決して、次にハマったのが先に書いた解像度とかピクセル密度。 最近、自分の中でやっと解消したので忘れないようにメモとして残しておきます。 ●言葉の意味が理解できなかった flashやってて、普段使う解像度とはモニタの縦横のピクセル数のことだったので、android開発の本やサイトで「ピクセル指定は良くない。解像度で見え方が違う。様々なデバイスでほぼ同様の見え方にするためにdpやspを使いましょう。」と言われても意味が分かりませんでした。 分かりやすく説明している人もたくさんいて（自分は理解できませんでしたが、きっと分かりやすいんだろうと予想）、「640px X 320pxの画面と800px X 480pxの画面だと100px X 100pxの正方形を描画した場合に画面に対する比率が違ってしまいます。」等と図入りで説明されても「そりゃそうだ」位にか思えず、その内容とピクセル密度や、dp→pxの変換がどう関連しているのかが分かりませんでした。 ●なぜ同じ大きさである必要があるか、が抜けていた 「タブレットの様な7インチや10インチの画面でギリギリ押せる大きさのボタンやギリギリ読めるテキストを表示した時、5インチの画面で快適に見れないよね。」 という内容の一文を見てやっと、解像度やピクセル密度の話はUIの表示に関わる内容であることが理解できました。ただ同じ大きさ・配置に表示することが目的だと思っていたので、こんな当たり前の一文を見るまですっかり忘れていました。 この一文を見た上で「端末毎の違いを吸収してくれるのがdpやspなのでこちらを使いましょう」という流れであれば自分でもすんなり理解できなと思われます。 ●なぜ忘れていた？ リキッドレイアウトのflashを作る場合、以下の事が当たり前のように必要になります。 ・画面の左上にロゴを置く、フッタは下付き、メイン画像は右付きだけど横幅が1000px超えたらそこで固定、等の配置に関する指定。 ・ロゴやコピーライトを画面サイズに対して常に同じ比率で表示する場合や背景画像を歪みなく画面全体に表示する、等の大きさに関する指定。 また、ブラウザの大きさは環境によって様々ですから、flashを使わないウェブページでも横幅○○px以内に要素を収める必要があったり、高さに関しても、主流ブラウザの全てでファーストビューに○○までを収める事が求められるため、これらの事を想定してデザインなりコーディングをする事が当たり前だと思っていました。 その部分を（ある程度は）考えなくていい、とはとても思いつきませんでした。10インチで見えるけど、5インチで見れないかもしれない画面を作ろうとは元々考えませんでしたし、、、 dp・spが無かったとして、「様々な画面に対応するためには画面サイズとピクセル密度を用いた計算が必要になります」とあっても、そういう物なんだろう、と覚えていたと思います。 ●こんな順番だったらすんなり理解できたと思う １、Androidには様々な画面サイズがあります。 ２、大きな画面のみを想定して作ると、小さい画面で見る時に不都合が出る可能性があります。 ３、解像度やピクセル密度を考えながら色々な画面を想定して作るのは大変そうですね。 ４、それらを深く意識しなくてもいいのが「dp」「sp」です。 ５、px指定ではなくdpやspを使いましょう。 ●おわり 間違いや認識にズレがある場合はご指摘いただけると大変助かります。 これより大きくハマっているのがアニメーションの実現で、本当に簡単な動きも再現できずに時間ばかりが過ぎています。]]></description>
			<content:encoded><![CDATA[<p>flash畑にいた自分がAndroidのJava畑に移ろうとしたときにまずハマったのがレイアウト（画面の作り方）。<br />
RelativeLayoutと出会って何となく解決して、次にハマったのが先に書いた解像度とかピクセル密度。<br />
最近、自分の中でやっと解消したので忘れないようにメモとして残しておきます。</p>
<p><span id="more-215"></span></p>
<h3>●言葉の意味が理解できなかった</h3>
<p>flashやってて、普段使う解像度とはモニタの縦横のピクセル数のことだったので、android開発の本やサイトで「ピクセル指定は良くない。解像度で見え方が違う。様々なデバイスでほぼ同様の見え方にするためにdpやspを使いましょう。」と言われても意味が分かりませんでした。</p>
<p>分かりやすく説明している人もたくさんいて（自分は理解できませんでしたが、きっと分かりやすいんだろうと予想）、「640px X 320pxの画面と800px X 480pxの画面だと100px X 100pxの正方形を描画した場合に画面に対する比率が違ってしまいます。」等と図入りで説明されても「そりゃそうだ」位にか思えず、その内容とピクセル密度や、dp→pxの変換がどう関連しているのかが分かりませんでした。</p>
<h3>●なぜ同じ大きさである必要があるか、が抜けていた</h3>
<p>「タブレットの様な7インチや10インチの画面でギリギリ押せる大きさのボタンやギリギリ読めるテキストを表示した時、5インチの画面で快適に見れないよね。」<br />
という内容の一文を見てやっと、解像度やピクセル密度の話はUIの表示に関わる内容であることが理解できました。ただ同じ大きさ・配置に表示することが目的だと思っていたので、こんな当たり前の一文を見るまですっかり忘れていました。</p>
<p>この一文を見た上で「端末毎の違いを吸収してくれるのがdpやspなのでこちらを使いましょう」という流れであれば自分でもすんなり理解できなと思われます。</p>
<h3>●なぜ忘れていた？</h3>
<p>リキッドレイアウトのflashを作る場合、以下の事が当たり前のように必要になります。<br />
・画面の左上にロゴを置く、フッタは下付き、メイン画像は右付きだけど横幅が1000px超えたらそこで固定、等の配置に関する指定。<br />
・ロゴやコピーライトを画面サイズに対して常に同じ比率で表示する場合や背景画像を歪みなく画面全体に表示する、等の大きさに関する指定。</p>
<p>また、ブラウザの大きさは環境によって様々ですから、flashを使わないウェブページでも横幅○○px以内に要素を収める必要があったり、高さに関しても、主流ブラウザの全てでファーストビューに○○までを収める事が求められるため、これらの事を想定してデザインなりコーディングをする事が当たり前だと思っていました。<br />
その部分を（ある程度は）考えなくていい、とはとても思いつきませんでした。10インチで見えるけど、5インチで見れないかもしれない画面を作ろうとは元々考えませんでしたし、、、</p>
<p>dp・spが無かったとして、「様々な画面に対応するためには画面サイズとピクセル密度を用いた計算が必要になります」とあっても、そういう物なんだろう、と覚えていたと思います。</p>
<h3>●こんな順番だったらすんなり理解できたと思う</h3>
<p>１、Androidには様々な画面サイズがあります。<br />
２、大きな画面のみを想定して作ると、小さい画面で見る時に不都合が出る可能性があります。<br />
３、解像度やピクセル密度を考えながら色々な画面を想定して作るのは大変そうですね。<br />
４、それらを深く意識しなくてもいいのが「dp」「sp」です。<br />
５、px指定ではなくdpやspを使いましょう。</p>
<h3>●おわり</h3>
<p>間違いや認識にズレがある場合はご指摘いただけると大変助かります。<br />
これより大きくハマっているのがアニメーションの実現で、本当に簡単な動きも再現できずに時間ばかりが過ぎています。</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2012/02/12-215/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コミケにこれを持っていこうDL状況(2012年1月)</title>
		<link>http://cda244.com/2012/01/16-198/</link>
		<comments>http://cda244.com/2012/01/16-198/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 15:17:19 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=198</guid>
		<description><![CDATA[冬コミが終わって、正月も明けたこの辺でDL状況です。 ちなみに、前回の夏コミ終了後の報告はこちらになります。 ※2012年1月15日に確認したデータです。 ●ダウンロード数 合計インストール数：1103（前回:660） 有効インストール数：445（前回:378） 合計インストール数が1000超えちゃいました。ありがとうございます。 ●ダウンロード数の遷移 昨年8月の夏コミ直前に最大風速を記録後、有効インストール数が減少し300あたりで安定してました。12月から段々と増えていってクリスマスあたり（冬コミ1週間前）からまた分かりやすい位伸びています。 冬コミ終了後は夏同様、インストール数が減少しています。アプリの性質を考えれば予想ができましたが、予想通りの形になってます。 ●どんな端末で使われているか OSは65%超が2.3、2.2は5ヶ月前から15%減ってますね。その他に3.Xと4がちょいちょい見られます。 端末で見ると、やっぱり強いギャラクシー。出て間もないS2が10%というのも驚きです。色々と話題になるレグザフォンが僅差ではありますが3位につけています。 ●国・言語 これは日本しか対応していないので100%日本・日本語です。 のはずですが、アメリカと台湾からそれぞれ1件DLがあるようです。 ●今後 次はコメントで頂いているサークル参加者への対応を行う予定です。どうするか、だけは頭にあるので後は形にするやる気を見つけて作業するだけです。今のところ要素の大きな変更や追加するつもりは無いです。 後、夏コミ前にコミケ関連のアプリを１つリリース予定です。コミケにこれを持っていこう、と同様に対象・用途ともに超限定するアプリを考えています。]]></description>
			<content:encoded><![CDATA[<p>冬コミが終わって、正月も明けたこの辺でDL状況です。<br />
ちなみに、前回の夏コミ終了後の報告は<a href="http://cda244.com/2011/08/19-13/" title="コミケにこれを持っていこう、ダウンロード状況">こちら</a>になります。<br />
※2012年1月15日に確認したデータです。<br />
<span id="more-198"></span></p>
<h3>●ダウンロード数</h3>
<p>合計インストール数：1103（前回:660）<br />
有効インストール数：445（前回:378）<br />
合計インストール数が1000超えちゃいました。ありがとうございます。</p>
<h3>●ダウンロード数の遷移</h3>
<p><div id="attachment_204" class="wp-caption alignnone" style="width: 310px"><a href="http://cda244.com/wordpress/wp-content/uploads/2012/01/img_1_dl.jpg"><img src="http://cda244.com/wordpress/wp-content/uploads/2012/01/img_1_dl-300x92.jpg" alt="コミケにこれを持っていこうDL状況(2012年1月)" title="コミケにこれを持っていこうDL状況(2012年1月)" width="300" height="92" class="size-medium wp-image-204" /></a><p class="wp-caption-text">コミケにこれを持っていこうDL状況(2012年1月)</p></div><br />
昨年8月の夏コミ直前に最大風速を記録後、有効インストール数が減少し300あたりで安定してました。12月から段々と増えていってクリスマスあたり（冬コミ1週間前）からまた分かりやすい位伸びています。</p>
<p>冬コミ終了後は夏同様、インストール数が減少しています。アプリの性質を考えれば予想ができましたが、予想通りの形になってます。</p>
<h3>●どんな端末で使われているか</h3>
<p><div id="attachment_206" class="wp-caption alignnone" style="width: 310px"><a href="http://cda244.com/wordpress/wp-content/uploads/2012/01/img_2_os.jpg"><img src="http://cda244.com/wordpress/wp-content/uploads/2012/01/img_2_os-300x124.jpg" alt="コミケにこれを持っていこう OSバージョンの割合" title="コミケにこれを持っていこう OSバージョンの割合" width="300" height="124" class="size-medium wp-image-206" /></a><p class="wp-caption-text">コミケにこれを持っていこう OSバージョンの割合</p></div><br />
<div id="attachment_207" class="wp-caption alignnone" style="width: 310px"><a href="http://cda244.com/wordpress/wp-content/uploads/2012/01/img_3_device.jpg"><img src="http://cda244.com/wordpress/wp-content/uploads/2012/01/img_3_device-300x124.jpg" alt="コミケにこれを持っていこう 端末の割合" title="コミケにこれを持っていこう 端末の割合" width="300" height="124" class="size-medium wp-image-207" /></a><p class="wp-caption-text">コミケにこれを持っていこう 端末の割合</p></div><br />
OSは65%超が2.3、2.2は5ヶ月前から15%減ってますね。その他に3.Xと4がちょいちょい見られます。<br />
端末で見ると、やっぱり強いギャラクシー。出て間もないS2が10%というのも驚きです。色々と話題になるレグザフォンが僅差ではありますが3位につけています。</p>
<h3>●国・言語</h3>
<p>これは日本しか対応していないので100%日本・日本語です。<br />
のはずですが、アメリカと台湾からそれぞれ1件DLがあるようです。</p>
<h3>●今後</h3>
<p>次はコメントで頂いているサークル参加者への対応を行う予定です。どうするか、だけは頭にあるので後は形にするやる気を見つけて作業するだけです。今のところ要素の大きな変更や追加するつもりは無いです。</p>
<p>後、夏コミ前にコミケ関連のアプリを１つリリース予定です。コミケにこれを持っていこう、と同様に対象・用途ともに超限定するアプリを考えています。</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2012/01/16-198/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FREContext.dispatchStatusEventAsyncでネイティブからのデータを受け取る</title>
		<link>http://cda244.com/2011/12/22-174/</link>
		<comments>http://cda244.com/2011/12/22-174/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 07:34:05 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=174</guid>
		<description><![CDATA[今回もAIR for Androidのネイティブ拡張絡みのエントリーです。 「AIR for Android ネイティブ拡張 with Flash CS5.5」でネイティブ拡張のサンプルを３つ程書きましたが、どれも基本的にAIRからネイティブ側を呼び出すだけでした。ExternalInterface.call 的な使い方ですね。 今回はExternalInterface.addCallback 的な使い方について、AlertDialogを例に紹介します。 ●ネイティブ側の実装 まずはJavaでネイティブ側を実装します。窓口となる ANEMain クラスは以下です。 ANEMainではダイアログを表示するクラスを登録しているだけです。27行目のFuncDialogクラス内でダイアログを作成、表示します。 FuncDialogクラスは以下。 call内でダイアログを作成し表示させています。 この際、「はい」「いいえ」ボタンをダイアログに追加し、ボタンクリック時の動作は onClick 内に記述しています。「はい」が押されるとAIRに返す値がyesに、「いいえ」が押されるとnoとなります。 最後に dispatchStatusEventAsync でAIRに結果を渡しています。 以上でネイティブ側の実装は終わりです。jarファイルとして書き出します。 ●ane作成 続いてFlash。ANE（というかswc）を作成します。 ネイティブ側から dispatchStatusEventAsync によってStatusEventがディスパッチされるのでExtensionContextにイベントを貼付けておきます（21行目）。 実際にディスパッチされると、statusHandlerが呼ばれ、statusHandler内でAIRに対してさらにディスパッチされます。 以上で終了です。 library.swcを書き出し、aneにパッケージします。 ●AIR作成 ネイティブ拡張に必要なパーツが完成したので最後にAIRを作成します。ネイティブ拡張まわりを管理するANEManagerクラスを作成します。 18行目のshowDialogはネイティブ側にダイアログを表示させる際に使用する関数で、以前のバイブレーションやトースト表示と同種の役割です。 15行目でネイティブ側からディスパッチされた結果を受け取れるようイベントリスナーを貼付けると、ネイティブ側でStatusEventがディスパッチされる際にaneを通してANEManagerのstatusHandlerが呼ばれます。 今回の例だと &#8230;<p class="read-more"><a href="http://cda244.com/2011/12/22-174/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>今回もAIR for Androidのネイティブ拡張絡みのエントリーです。<br />
「<a href="http://cda244.com/2011/12/09-112/" title="AIR for Android ネイティブ拡張 with Flash CS5.5">AIR for Android ネイティブ拡張 with Flash CS5.5</a>」でネイティブ拡張のサンプルを３つ程書きましたが、どれも基本的にAIRからネイティブ側を呼び出すだけでした。ExternalInterface.call 的な使い方ですね。<br />
今回はExternalInterface.addCallback 的な使い方について、AlertDialogを例に紹介します。<br />
<span id="more-174"></span></p>
<h3>●ネイティブ側の実装</h3>
<p>まずはJavaでネイティブ側を実装します。窓口となる ANEMain クラスは以下です。</p>
<pre class="brush: java; title: ; notranslate">
package com.cda244.nativeextension;

import java.util.HashMap;
import java.util.Map;

import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
import com.adobe.fre.FREFunction;
import com.cda244.nativeextension.func.*;

public class ANEMain implements FREExtension
{

	public static FREContext context;

	public FREContext createContext(String arg)
	{

		if(context == null) {
			context = new FREContext(){
				@Override
				public Map&lt;String, FREFunction&gt; getFunctions()
				{
					HashMap&lt;String, FREFunction&gt; result = new HashMap&lt;String, FREFunction&gt;();

					//ダイアログ
					result.put(&quot;showDialog&quot;, new FuncDialog() );

					return result;
				}

				@Override
				public void dispose(){	}
			};
		}

		return context;
	}

	public void initialize(){	}
	public void dispose(){	}
}
</pre>
<p>ANEMainではダイアログを表示するクラスを登録しているだけです。27行目のFuncDialogクラス内でダイアログを作成、表示します。<br />
FuncDialogクラスは以下。</p>
<pre class="brush: java; title: ; notranslate">
package com.cda244.nativeextension.func;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;

import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
import com.cda244.nativeextension.ANEMain;

public class FuncYNDialog implements FREFunction, DialogInterface.OnClickListener
{

	@Override
	public FREObject call(FREContext arg0, FREObject[] arg1)
	{
		Activity act = arg0.getActivity();

		AlertDialog.Builder _alertDialogBuilder;
		_alertDialogBuilder = new AlertDialog.Builder( act );
		_alertDialogBuilder.setCancelable(true);
		_alertDialogBuilder.setPositiveButton(&quot;はい&quot;, this);
		_alertDialogBuilder.setNegativeButton(&quot;いいえ&quot;, this);
		_alertDialogBuilder.setTitle(&quot;ダイアログのタイトル&quot;);
		_alertDialogBuilder.setMessage(&quot;ダイアログのテキスト&quot;);
		_alertDialogBuilder.show();

		return null;
	}

	public void onClick(DialogInterface dialog, int whichButton)
	{
		String res=&quot;&quot;;
		if(whichButton == DialogInterface.BUTTON1){
			res = &quot;yes&quot;;
        }
		else if (whichButton == DialogInterface.BUTTON2){
			res = &quot;no&quot;;
		}

		ANEMain.context.dispatchStatusEventAsync(res, &quot;fromNative&quot;);
	}
}
</pre>
<p>call内でダイアログを作成し表示させています。<br />
この際、「はい」「いいえ」ボタンをダイアログに追加し、ボタンクリック時の動作は onClick 内に記述しています。「はい」が押されるとAIRに返す値がyesに、「いいえ」が押されるとnoとなります。<br />
最後に dispatchStatusEventAsync でAIRに結果を渡しています。</p>
<p>以上でネイティブ側の実装は終わりです。jarファイルとして書き出します。</p>
<h3>●ane作成</h3>
<p>続いてFlash。ANE（というかswc）を作成します。</p>
<pre class="brush: as3; title: ; notranslate">
package com.cda244.nativeextension
{

	import flash.display.*;
	import flash.events.StatusEvent;
	import flash.external.ExtensionContext;

	public class ANEMain extends MovieClip
	{

		private var context:ExtensionContext;

		public function ANEMain()
		{
			//extension.xmlのidタグに指定したクラス名でNative Extensionのコンテキストを取得
			context = ExtensionContext.createExtensionContext(&quot;com.cda244.nativeextension.ANEMain&quot;, null);
		}

		public function callShowDialog():void
		{
			context.addEventListener( StatusEvent.STATUS, statusHandler);
			context.call( &quot;showDialog&quot; );
		}

		private function statusHandler(e:StatusEvent):void
		{
			dispatchEvent(e);
		}

	}
}
</pre>
<p>ネイティブ側から dispatchStatusEventAsync によってStatusEventがディスパッチされるのでExtensionContextにイベントを貼付けておきます（21行目）。<br />
実際にディスパッチされると、statusHandlerが呼ばれ、statusHandler内でAIRに対してさらにディスパッチされます。</p>
<p>以上で終了です。<br />
library.swcを書き出し、aneにパッケージします。</p>
<h3>●AIR作成</h3>
<p>ネイティブ拡張に必要なパーツが完成したので最後にAIRを作成します。ネイティブ拡張まわりを管理するANEManagerクラスを作成します。</p>
<pre class="brush: as3; title: ; notranslate">
package ane
{

	import flash.events.StatusEvent;
	import com.cda244.nativeextension.ANEMain;

	public class ANEManager
	{

		private var _ane:ANEMain;

		public function ANEManager()
		{
			_ane = new ANEMain();
			_ane.addEventListener( StatusEvent.STATUS, statusHandler );
		}

		public function showDialog():void
		{
			_ane.callShowYNDialog();
		}

		private function statusHandler(e:StatusEvent):void
		{
			//ネイティブ拡張から返ってくる値
			trace( e.code, e.level);
		}

	}
}
</pre>
<p>18行目のshowDialogはネイティブ側にダイアログを表示させる際に使用する関数で、以前のバイブレーションやトースト表示と同種の役割です。<br />
15行目でネイティブ側からディスパッチされた結果を受け取れるようイベントリスナーを貼付けると、ネイティブ側でStatusEventがディスパッチされる際にaneを通してANEManagerのstatusHandlerが呼ばれます。</p>
<p>今回の例だと<br />
e.code →「yes」または「no」<br />
e.level → 「fromNative」<br />
となります。<br />
あとは if や switch でそれぞれの処理を振り分けるだけです。</p>
<p>以上になります。<br />
個人的には Android標準のアクティビティ（ダイアログ）が使用できることで、バックボタンを押す際の処理の一部を考えなくて済むのが助かると思っています。<br />
Androidのバックボタン機能はブラウザの戻るボタンに似ているというか、階層構造ではないにしろProgressionのシーン管理の様な考えが必要になるので、そこの負担を減らせるのはありがたいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2011/12/22-174/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AIR for Android ネイティブ拡張 with Flash CS5.5</title>
		<link>http://cda244.com/2011/12/09-112/</link>
		<comments>http://cda244.com/2011/12/09-112/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 15:03:46 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=112</guid>
		<description><![CDATA[この記事は Android Advent Calendar2011という企画の12月9日分（裏）です。 裏表含めて50件のAndroidの記事が集まる素敵な企画です。 これまでの方々がガチエントリーかガチネタかという記事を書いている中、どちらにも振り切れていないので恐縮ですが、先週からAIR for Androidのネイティブ開発(ANE)にハマっているのでその事について書かせていただきます。 先週、Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、という記事を書いたのでその続きという形になります。今回は少し実用的なレベルに踏み込んでみます。 ●拡張する機能 今回、割とすぐ使いたい（であろう）３つの機能について拡張したいと思います。 ・バイブレーション（基本ですから） ・トースト（軽めの通知やアテンションに） ・暗黙的インテント（ツイッターアプリとの連動などに） どれも戻り値がないので簡単なものばかりです。むしろ前回のハローワールドの方が面倒だったかもしれません。 ●jar作成 javaプロジェクト作成は以前と同じです。 パッケージは com.cda244.nativeextension で FREExtension を拡張したメインのクラスはANEMainとしました。 このクラスは窓口として機能するだけにしておいて、各機能の中身は9〜11行目でインポートしているクラスに記述しています。flashから呼ぶ関数名は「vibrate」「showToast」「throwIntent」になります。 続いて、各関数の記述は以下の通りです。 バイブレーション (FuncVibrate) トースト (FuncToast) 暗黙的インテント (FuncIntent) ３つとも、構造はほぼ同じで、call の中が機能によって違うだけです。 これらをまとめてjarファイルを書き出します。 ●extension.xml作成 今回のextension.xmlは以下です。jarファイルはane.jarとしました。 ●swc、ane作成 ネイティブ側の窓口ができたところで、次はflash側の窓口を作ります。前回と同様にlibrary.flaを作成後、ドキュメントファイルを以下の様にします。 トーストとインテントは空文字以外の時にネイティブ関数を呼び、バイブレーションには引数が無い場合は0.1秒振動するように設定してあります。 なお、0.01秒など、設定時間が短すぎるとバイブレーションが機能しないのでご注意下さい。 &#8230;<p class="read-more"><a href="http://cda244.com/2011/12/09-112/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>この記事は <a title="Android Advent Calendar2011" href="http://androidadvent.blogspot.com/2011/11/android-advent-calendar-2011_21.html" target="_blank">Android Advent Calendar2011</a>という企画の12月9日分（裏）です。<br />
裏表含めて50件のAndroidの記事が集まる素敵な企画です。</p>
<p>これまでの方々がガチエントリーかガチネタかという記事を書いている中、どちらにも振り切れていないので恐縮ですが、先週からAIR for Androidのネイティブ開発(ANE)にハマっているのでその事について書かせていただきます。<br />
先週、<a title="Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる" href="http://cda244.com/2011/12/01-70/">Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる</a>、という記事を書いたのでその続きという形になります。今回は少し実用的なレベルに踏み込んでみます。<br />
<span id="more-112"></span></p>
<h3>●拡張する機能</h3>
<p>今回、割とすぐ使いたい（であろう）３つの機能について拡張したいと思います。<br />
・バイブレーション（基本ですから）<br />
・トースト（軽めの通知やアテンションに）<br />
・暗黙的インテント（ツイッターアプリとの連動などに）<br />
どれも戻り値がないので簡単なものばかりです。むしろ前回のハローワールドの方が面倒だったかもしれません。</p>
<h3>●jar作成</h3>
<p>javaプロジェクト作成は<a title="Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、２" href="http://cda244.com/2011/12/01-78/">以前</a>と同じです。<br />
パッケージは <strong>com.cda244.nativeextension</strong> で FREExtension を拡張したメインのクラスは<strong>ANEMain</strong>としました。</p>
<pre class="brush: java; title: ; notranslate">
package com.cda244.nativeextension;

import java.util.HashMap;
import java.util.Map;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
import com.adobe.fre.FREFunction;
import com.cda244.nativeextension.func.FuncIntent;
import com.cda244.nativeextension.func.FuncVibrate;
import com.cda244.nativeextension.func.FuncToast;

public class ANEMain implements FREExtension
{

	public FREContext createContext(String arg)
	{

		FREContext context = new FREContext()
		{
			@Override
			public Map getFunctions()
			{
				HashMap result = new HashMap();

				//バイブレーション
				result.put( &quot;vibrate&quot;, new FuncVibrate() );

				//トースト
				result.put( &quot;showToast&quot;, new FuncToast() );

				//インテント
				result.put(&quot;throwIntent&quot;, new FuncIntent() );

				return result;
			}

			@Override
			public void dispose(){	}
		};
		return context;
	}

	public void initialize(){	}
	public void dispose(){	}
}
</pre>
<p>このクラスは窓口として機能するだけにしておいて、各機能の中身は9〜11行目でインポートしているクラスに記述しています。flashから呼ぶ関数名は「<strong>vibrate</strong>」「<strong>showToast</strong>」「<strong>throwIntent</strong>」になります。<br />
続いて、各関数の記述は以下の通りです。</p>
<h4>バイブレーション (FuncVibrate)</h4>
<pre class="brush: java; title: ; notranslate">
package com.cda244.nativeextension.func;

import android.content.Context;
import android.os.Vibrator;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;

public class FuncVibrate implements FREFunction
{

	@Override
	public FREObject call(FREContext arg0, FREObject[] arg1)
	{

		try{
			//インスタンス取得
			Vibrator v = (Vibrator) arg0.getActivity().getSystemService(Context.VIBRATOR_SERVICE);

			//時間取得
			int time = arg1[0].getAsInt();

			//振動
			v.vibrate(time);
		}catch(Exception e){	}

		return null;
	}
}
</pre>
<h4>トースト (FuncToast)</h4>
<pre class="brush: java; title: ; notranslate">
package com.cda244.nativeextension.func;

import android.widget.Toast;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;

public class FuncToast implements FREFunction
{
	private static Toast toast;

	@Override
	public FREObject call(FREContext arg0, FREObject[] arg1)
	{

		try{
			//表示する文字列取得
			String msg = arg1[0].getAsString();

			if( toast != null){
				//表示しているトーストがあれば消す
				toast.cancel();
				toast = null;
			}

			//インスタンス取得
			toast = Toast.makeText( arg0.getActivity(), msg, Toast.LENGTH_SHORT);

			//表示
			toast.show();
		}catch(Exception e){	}

		return null;
	}
}
</pre>
<h4>暗黙的インテント (FuncIntent)</h4>
<pre class="brush: java; title: ; notranslate">
package com.cda244.nativeextension.func;

import android.content.Intent;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;

public class FuncIntent implements FREFunction
{

	@Override
	public FREObject call(FREContext arg0, FREObject[] arg1)
	{
		try{
			//他アプリに渡す文字列取得
			String msg = arg1[0].getAsString();

			//インテント作成、設定
			Intent intent = new Intent(Intent.ACTION_SEND);
			intent.putExtra(Intent.EXTRA_TEXT, msg);
			intent.setType(&quot;text/plain&quot;);

			//渡す
			arg0.getActivity().startActivity(intent);
		}catch(Exception e){
		}
		return null;
	}
}
</pre>
<p>３つとも、構造はほぼ同じで、call の中が機能によって違うだけです。</p>
<p>これらをまとめてjarファイルを書き出します。</p>
<h3>●extension.xml作成</h3>
<p>今回のextension.xmlは以下です。jarファイルは<strong>ane.jar</strong>としました。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;extension xmlns=&quot;http://ns.adobe.com/air/extension/2.5&quot;&gt;
    &lt;id&gt;com.cda244.nativeextension.ANEMain&lt;/id&gt;
    &lt;versionNumber&gt;1.0.0&lt;/versionNumber&gt;
    &lt;platforms&gt;
        &lt;platform name=&quot;Android-ARM&quot;&gt;
        	&lt;applicationDeployment&gt;
                &lt;nativeLibrary&gt;ane.jar&lt;/nativeLibrary&gt;
                &lt;initializer&gt;com.cda244.nativeextension.ANEMain&lt;/initializer&gt;
                &lt;finalizer&gt;com.cda244.nativeextension.ANEMain&lt;/finalizer&gt;
            &lt;/applicationDeployment&gt;
        &lt;/platform&gt;
    &lt;/platforms&gt;
&lt;/extension&gt;
</pre>
<h3>●swc、ane作成</h3>
<p>ネイティブ側の窓口ができたところで、次はflash側の窓口を作ります。前回と同様にlibrary.flaを作成後、ドキュメントファイルを以下の様にします。</p>
<pre class="brush: as3; title: ; notranslate">
package com.cda244.nativeextension
{
	import flash.display.*;
	import flash.external.ExtensionContext;

	public class ANEMain extends MovieClip
	{

		private var context:ExtensionContext;

		public function ANEMain()
		{
			//extension.xmlのidタグに指定したクラス名でNative Extensionのコンテキストを取得
			context = ExtensionContext.createExtensionContext(&quot;com.cda244.nativeextension.ANEMain&quot;, null);
		}

		public function callShowToast( $mes:String=&quot;&quot; ):void
		{
			if( $mes != &quot;&quot; ){	context.call( &quot;showToast&quot;, $mes );	}
		}

		public function callThrowIntent( $mes:String=&quot;&quot; ):void
		{
			if( $mes != &quot;&quot; ){	context.call( &quot;throwIntent&quot;, $mes );	}
		}

		public function callVibrate( $time:uint=100 ):void
		{
			context.call( &quot;vibrate&quot;, $time );
		}

	}
}
</pre>
<p>トーストとインテントは空文字以外の時にネイティブ関数を呼び、バイブレーションには引数が無い場合は0.1秒振動するように設定してあります。<br />
なお、0.01秒など、設定時間が短すぎるとバイブレーションが機能しないのでご注意下さい。</p>
<p>ドキュメントクラスの記述が終了しましたらswfとswcを書き出し、先に作成したjarファイルと合わせてaneファイルを作ります。</p>
<h3>●AIR作成</h3>
<p>ラストのAIR作成は、<a title="Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、３" href="http://cda244.com/2011/12/01-89/">「Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、３」</a>の時と同じ手順です。まずaneファイルを複製して拡張子をswcに変え、flaファイルのライブラリパスに追加します。<br />
swcの設定後は、メインタイムラインの1フレーム目に以下の様に記述します。</p>
<pre class="brush: as3; title: ; notranslate">
import com.cda244.nativeextension.ANEMain;
import flash.text.*;
import flash.events.*;
import flash.display.*;

var ane:ANEMain = new ANEMain();
var txt:TextField = new TextField();
var tBt:MovieClip = new MovieClip();
var vBt:MovieClip = new MovieClip();
var iBt:MovieClip = new MovieClip();

//トースト
txt.x = txt.y = 10;
txt.width = 300;
txt.border=true;
txt.borderColor=0x000000;
txt.type = TextFieldType.INPUT;
txt.multiline=true;
txt.text = &quot;トースト表示テキスト&quot;
addChild( txt );
tBt.x = 340;
tBt.y = 10;
tBt.graphics.beginFill(0x003300);
tBt.graphics.drawRect(0, 0, 100, 100);
tBt.graphics.endFill();
tBt.addEventListener(MouseEvent.CLICK, tBtClick );
addChild( tBt );

//バイブレーション
vBt.x = 10;
vBt.y = 200;
vBt.graphics.beginFill(0xFF0000);
vBt.graphics.drawRect(0, 0, 400, 100);
vBt.graphics.endFill();
vBt.addEventListener(MouseEvent.CLICK, vBtClick);
addChild( vBt );

//インテント
iBt.x = 10;
iBt.y = 400;
iBt.graphics.beginFill(0x0000FF);
iBt.graphics.drawRect(0, 0, 400, 100);
iBt.graphics.endFill();
iBt.addEventListener(MouseEvent.CLICK, iBtClick);
addChild( iBt );

function tBtClick(e:MouseEvent):void
{
	//改行コードを\nに統一する
	var str:String = txt.text.replace(/\n\r/g, &quot;\n&quot;);
	str = txt.text.replace(/\r/g, &quot;\n&quot;);
	ane.callShowToast( str );
}

function vBtClick(e:MouseEvent):void
{
	ane.callVibrate( 400 );
	ane.callShowToast( &quot;バイブレーション&quot; );
}

function iBtClick(e:MouseEvent):void
{
	ane.callThrowIntent( &quot;暗黙のインテント テスト&quot; );
	ane.callShowToast( &quot;暗黙のインテント テスト&quot; );
}
</pre>
<p>続いて、app.xmlも忘れずに修正します。<br />
今回はバイブレーションも使うため、extentionsタグの他に権限も追記が必要です。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;uses-permission android:name=&quot;android.permission.VIBRATE&quot;/&gt;
</pre>
<p>extensionsタグは以下。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;extensions&gt;
	&lt;extensionID&gt;com.cda244.nativeextension.ANEMain&lt;/extensionID&gt;
&lt;/extensions&gt;
</pre>
<p>あとはswfをパブリッシュし、adtコマンドでapkをパッケージすれば完成です。</p>
<h3>●動作確認</h3>
<p>端末にインストールして確認すると以下の様な画面になります。<br />
<div id="attachment_143" class="wp-caption alignnone" style="width: 256px"><a href="http://cda244.com/wordpress/wp-content/uploads/2011/12/ane_sample.gif"><img src="http://cda244.com/wordpress/wp-content/uploads/2011/12/ane_sample-246x300.gif" alt="ネイティブ拡張 サンプルアプリ" title="ane_sample" width="246" height="300" class="size-medium wp-image-143" /></a><p class="wp-caption-text">ネイティブ拡張 サンプルアプリ</p></div><br />
ベタ塗りの矩形をタップすると、<br />
・深緑の正方形 → テキストフィールド内のテキストをトーストで表示<br />
・赤い長方形 → 400ミリ秒バイブレーション<br />
・青い長方形 → インテント投げ<br />
を行います。<br />
バイブレーションとインテント投げについては、確認用にトースト表示も行っています。</p>
<h3>●おわりに</h3>
<p>以上がAIR for Android ネイティブ拡張のサンプル紹介になります。<br />
今回はAIRからは投げっぱなしで大丈夫な処理ばかりだったのですが、ダイアログや通知、Event.DEACTIVATE時にServiceを起動して常駐して、、、等々いろいろな事ができそうな気がします。<br />
ただ、ネイティブ拡張は、ランタイムを通したAIR側とネイティブ側のやり取り（変換）が軽くない処理とのこと（<a href="http://adclounge.jp/adc-meetup/flash-meetup/" title="FLASH MEETUP" target="_blank">FLASH MEETUP</a>情報）で、あまり頻繁に活用するのは注意が必要です。</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2011/12/09-112/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FLASH MEETUP まとめメモ</title>
		<link>http://cda244.com/2011/12/07-151/</link>
		<comments>http://cda244.com/2011/12/07-151/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 14:09:28 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=151</guid>
		<description><![CDATA[昨日、FLASH MEETUPに参加してきました。 2時間延長で23時まで続きましたが、最後まで一通り聞いて、自分に刺さった事を何となくカテゴリ別に並べました。ノートに書きなぐったメモのまとめなので、足りない/間違ってる等々あるかと思いますが、ご了承下さい。 ※Flexは守備範囲外なのでそれ関連の話はまるっと抜けてます。 アドビ or Flashがフォーカスしてること関連 アドビとしてはデスクトップはFlash Player、モバイルはAIRにフォーカスしていく。 Flash内のフォーカス分野としては、GamingとAdvanced Video。 Flash Proは2Dアニメーションオーサリングのソフトであり、3D機能を特別強化することは考えていない。3DのオーサリングツールならFlare3Dがお勧め。 アドビとしてフレームワークを作る予定はない。分野が広すぎてカバーしきれないため。 ANEを集めて販売するサイト？は考えていない。強力なANEを有料で提供するチャンスは皆にある。 Flashの未来はゲームとかディスプレイ内のコンテンツだけではない。インスタレーションとか使い道はもっとあるはず。 HTML5との関わり方関連 アドビとしてはFlashやHTML5にこだわらず、ベストなツールを提供していきたい。 ありふれたインタラクティブコンテンツならHTML5（やjs）で制作した方がいいし、そういう流れ。 Flashやってる人もHTML5とか覚えた方がいい。聞かれる事も増えるだろうから、出来る/出来ない事、メリット/デメリットを知っている位は最低限必要。 Flashを使用した開発関連 教育用アプリなんかはFlashで開発するのがいいのでは？ 3DゲームだったらUnityかもしれないが、2DのゲームだったらFlashの方が向いている。 マルチデバイス対応のゲーム制作ならFlashが一番。 パフォーマンスは Cocos2D < Starling < Low-level Stage3D ANEよりもアルケミーの方が高速。ANEはネイティブ環境との通信コストが低くない。セキュリティの観点からもアルケミーはFlashのサンドボックス内で動くからこっちの方が安全。 Flashの機能関連 グラフィックシンボル、クラシックトゥイーンは今後も残す。非推奨みたいな扱いにもしない。 Flash Player11インキュベーターには対応GPUの制限を設けていなかった、いくつかの環境で問題が見つかったのでリリース時には09年以前のドライバをブラックリストに登録した。12年初頭のバージョンではブラックリストの制限を緩める予定。 モバイルFlash Player関連 iPhone/iPadが非対応であることは確かに開発中止の１つの原因。 AndroidブラウザのFlash &#8230;<p class="read-more"><a href="http://cda244.com/2011/12/07-151/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>昨日、<a href="http://atnd.org/events/22297" title="FLASH MEETUP" target="_blank">FLASH MEETUP</a>に参加してきました。<br />
2時間延長で23時まで続きましたが、最後まで一通り聞いて、自分に刺さった事を何となくカテゴリ別に並べました。ノートに書きなぐったメモのまとめなので、足りない/間違ってる等々あるかと思いますが、ご了承下さい。<br />
※Flexは守備範囲外なのでそれ関連の話はまるっと抜けてます。<br />
<span id="more-151"></span></p>
<h3>アドビ or Flashがフォーカスしてること関連</h3>
<ul>
<li>アドビとしてはデスクトップはFlash Player、モバイルはAIRにフォーカスしていく。</li>
<li>Flash内のフォーカス分野としては、GamingとAdvanced Video。</li>
<li>Flash Proは2Dアニメーションオーサリングのソフトであり、3D機能を特別強化することは考えていない。3Dのオーサリングツールなら<a href="http://www.flare3d.com/" title="Flare3D" target="_blank">Flare3D</a>がお勧め。</li>
<li>アドビとしてフレームワークを作る予定はない。分野が広すぎてカバーしきれないため。</li>
<li>ANEを集めて販売するサイト？は考えていない。強力なANEを有料で提供するチャンスは皆にある。</li>
<li>Flashの未来はゲームとかディスプレイ内のコンテンツだけではない。インスタレーションとか使い道はもっとあるはず。</li>
</ul>
<h3>HTML5との関わり方関連</h3>
<ul>
<li>アドビとしてはFlashやHTML5にこだわらず、ベストなツールを提供していきたい。</li>
<li>ありふれたインタラクティブコンテンツならHTML5（やjs）で制作した方がいいし、そういう流れ。</li>
<li>Flashやってる人もHTML5とか覚えた方がいい。聞かれる事も増えるだろうから、出来る/出来ない事、メリット/デメリットを知っている位は最低限必要。</li>
</ul>
<h3>Flashを使用した開発関連</h3>
<ul>
<li>教育用アプリなんかはFlashで開発するのがいいのでは？</li>
<li>3DゲームだったらUnityかもしれないが、2DのゲームだったらFlashの方が向いている。</li>
<li>マルチデバイス対応のゲーム制作ならFlashが一番。</li>
<li>パフォーマンスは Cocos2D < Starling < Low-level Stage3D</li>
<li>ANEよりもアルケミーの方が高速。ANEはネイティブ環境との通信コストが低くない。セキュリティの観点からもアルケミーはFlashのサンドボックス内で動くからこっちの方が安全。</li>
</ul>
<h3>Flashの機能関連</h3>
<ul>
<li>グラフィックシンボル、クラシックトゥイーンは今後も残す。非推奨みたいな扱いにもしない。</li>
<li>Flash Player11インキュベーターには対応GPUの制限を設けていなかった、いくつかの環境で問題が見つかったのでリリース時には09年以前のドライバをブラックリストに登録した。12年初頭のバージョンではブラックリストの制限を緩める予定。</li>
</ul>
<h3>モバイルFlash Player関連</h3>
<ul>
<li>iPhone/iPadが非対応であることは確かに開発中止の１つの原因。</li>
<li>AndroidブラウザのFlash Playerの開発はAndroid 4.0で終了。以降はバグフィックス等のサポートのみ。</li>
<li>モバイルのFlash Player開発は様々なハードベンダーと協力しないといけないから大変（仕様もクローズだし）。プラグインフリーの流れを受け入れる必要もある。</li>
<li>2012年初頭にモバイルAIRにもStage 3Dを対応させる。サポートするのはiOSは3GS以降。Androidは2.2以降。</li>
</ul>
<h3>Flash周りの今後／ロードマップ等</h3>
<ul>
<li>2012年初頭にマウスロック。</li>
<li>2012年初頭にwin環境のサイレントアップデート対応。</li>
<li>2012年初頭に右および中央クリック対応。</li>
<li>2012年半ばにMac環境のサイレントアップデート対応</li>
<li>Low-latency Audio。環境毎に現状で200〜250msecある遅延を40msec程に減らせる。2012年半ばあたりに実装。</li>
<li>Video処理のマルチスレッド化を進行中。</li>
<li>AS3をHTML5（というかjs？）で書き出す機能は開発しているが実験段階。</li>
</ul>
<h3>その他</h3>
<ul>
<li>Flash Player11の普及率は2011年内に80%に達する見込み。</li>
<li>ハードウェアアクセラレーター対応GPUの普及率ははFlash Player11環境の50%強程度。</li>
<li>最適化ツールとして期待のMonocle。フレーム毎の処理時間の内容が見れる（Flash Playerの遅延？それともコードに無駄がある？等々）。wifi使用でモバイル環境でも動く。お目見えは2012年半ば。</li>
<li>アドビへのメール（要望やバグ）は日本語でもOK。</li>
</ul>
<p>なお、ちゃんとしたまとめとtogetterはこちらです。私のメモは一言レベルの連続ですが、こちらは大変キチンとまとめられております。<br />
・<a href="http://d.hatena.ne.jp/yukoba/20111206/flash_meetup" title="Flashの未来をFLASH MEETUPで聞いてきた！" target="_blank">Flashの未来をFLASH MEETUPで聞いてきた！</a><br />
・<a href="http://d.hatena.ne.jp/absj31/20111206/1323185146" title="FLASH MEETUPに参加してきた -Shinya’s Daily Report" target="_blank">FLASH MEETUPに参加してきた -Shinya’s Daily Report</a><br />
・<a href="http://togetter.com/li/223977" title="2011/12/06 FLASH MEETUP #flashmeetup" target="_blank">2011/12/06 FLASH MEETUP #flashmeetup -togetter</a><br />
コミュニティラウンジも<br />
・<a href="http://adclounge.jp/adc-meetup/flash-meetup/" title="FLASH MEETUP -コミュニティラウンジ" target="_blank">FLASH MEETUP -コミュニティラウンジ</a>	</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2011/12/07-151/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、３</title>
		<link>http://cda244.com/2011/12/01-89/</link>
		<comments>http://cda244.com/2011/12/01-89/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 08:12:13 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=89</guid>
		<description><![CDATA[Flash CS5.5環境で、Android向けのANEにゼロから取り組んでみましたので手順をご紹介します。 準備と流れの紹介、aneファイルのパッケージ化と来て、今回がラストのAIR作成です。 ●フォルダ構造の完成図 最終的に、フォルダ構造はこんな感じになります。 １つずつ確認しますと、 helloane.fla、helloane-app.xml、helloane.swfはこれから作成するファイルです。 次のaneフォルダは前回用意したaneファイル他、もろもろが含まれています。 libsフォルダも今回新しく作るフォルダで、後で説明しますが、aneファイルとswcファイルを格納します。 test.p12はaneファイルをパッケージする時に使用した証明書です。今回、apkファイルをパッケージする時もこれを使用します。 ●aneファイルをコピー 前回用意したaneファイルを、新しく作るlibsフォルダにコピーします。以降、aneフォルダは使用しません。 拡張子がaneのままだとFlashがコンポーネントとして認識しないので、上のフォルダ構造完成図のようにaneファイルを複製して拡張子をswcに変更します。この時、aneファイルはapkファイルをパッケージする時に使用するのでこのまま残しておいてください。 ●flaファイル作成 swcが用意できましたらflaファイルを作成します(図中のhelloane.fla)。プレイヤーバージョンは AIR for Android です。 スクリプトの設定画面でライブラリパスに先ほど作成したswcを指定します。追加すると、swcのアイコンの左に三角が表示されるので、内容を展開してリンクの種類に外部を設定します。 引き続き、AIR設定画面の権限で、INTERNETにチェックを入れます。 app.xmlが自動で更新されるのが気になる場合は「アプリケーション記述ファイルへの〜手動で管理します。」にチェックを入れましょう。 AIR設定画面を開くと、helloane-app.xmlが作成または更新されます。 ●ネイティブ拡張のためのスクリプト記述 メインタイムラインにダイナミックテキストフィールドを作成し、インスタンス名を「txt」とします。 フォントは_ゴシックか_等幅です。サイズは文字が読めればいくつでも構いません。 今回は簡単なサンプルなので、直接メインタイムラインにコードを記述します。 swcにパスを通しているのでコードアシストが機能すると思います。 ステージ上のテキストフィールドをタップするたびにネイティブ拡張ライブラリから「Hello World」の文字列を受け取って表示します。 ●helloane-app.xmlを修正 自動で書き出されるapp.xmlですが、ネイティブ拡張のために追加記述する箇所があります。 applicationタグの下、androidタグやiconタグと同列に以下のextensionsタグを追加します。 extensionIDの中は、前回作成したextension.xml内のidタグと同じものです。 ●swfの書き出し flaファイルに戻って、swfを書き出します。 ムービープレビューをしても画面が立ち上がりませんが、swfが書き出されています。 ●apkにパッケージ CS5.5では直接パッケージできないので、コマンドラインに以下の様に入力します。 改行していますが１行で入力してください。 &#8230;<p class="read-more"><a href="http://cda244.com/2011/12/01-89/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Flash CS5.5環境で、Android向けのANEにゼロから取り組んでみましたので手順をご紹介します。<br />
<a href="http://cda244.com/2011/12/01-70/" title="Android環境のANEにゼロから取り組んでみる、１">準備と流れの紹介</a>、<a href="http://cda244.com/2011/12/01-78/" title="Android環境のANEにゼロから取り組んでみる、２">aneファイルのパッケージ化</a>と来て、今回がラストのAIR作成です。<br />
<span id="more-89"></span></p>
<h3>●フォルダ構造の完成図</h3>
<p>最終的に、フォルダ構造はこんな感じになります。<br />
<div id="attachment_91" class="wp-caption alignnone" style="width: 310px"><a href="http://cda244.com/wordpress/wp-content/uploads/2011/12/android_ane_3.jpg"><img src="http://cda244.com/wordpress/wp-content/uploads/2011/12/android_ane_3-300x174.jpg" alt="Android ANE作成、フォルダ構造" title="android_ane_3" width="300" height="174" class="size-medium wp-image-91" /></a><p class="wp-caption-text">Android ANE作成、フォルダ構造</p></div><br />
１つずつ確認しますと、<br />
helloane.fla、helloane-app.xml、helloane.swfはこれから作成するファイルです。<br />
次のaneフォルダは前回用意したaneファイル他、もろもろが含まれています。<br />
libsフォルダも今回新しく作るフォルダで、後で説明しますが、aneファイルとswcファイルを格納します。<br />
test.p12はaneファイルをパッケージする時に使用した証明書です。今回、apkファイルをパッケージする時もこれを使用します。</p>
<h3>●aneファイルをコピー</h3>
<p>前回用意したaneファイルを、新しく作るlibsフォルダにコピーします。以降、aneフォルダは使用しません。<br />
拡張子がaneのままだとFlashがコンポーネントとして認識しないので、上のフォルダ構造完成図のようにaneファイルを複製して拡張子をswcに変更します。この時、aneファイルはapkファイルをパッケージする時に使用するのでこのまま残しておいてください。</p>
<h3>●flaファイル作成</h3>
<p>swcが用意できましたらflaファイルを作成します(図中のhelloane.fla)。プレイヤーバージョンは AIR for Android です。<br />
スクリプトの設定画面でライブラリパスに先ほど作成したswcを指定します。追加すると、swcのアイコンの左に三角が表示されるので、内容を展開してリンクの種類に外部を設定します。<br />
<div id="attachment_93" class="wp-caption alignnone" style="width: 219px"><a href="http://cda244.com/wordpress/wp-content/uploads/2011/12/android_ane_swc.gif"><img src="http://cda244.com/wordpress/wp-content/uploads/2011/12/android_ane_swc-209x300.gif" alt="ANE作成。swc設定" title="android_ane_swc" width="209" height="300" class="size-medium wp-image-93" /></a><p class="wp-caption-text">ANE作成。swc設定</p></div><br />
引き続き、AIR設定画面の権限で、INTERNETにチェックを入れます。<br />
app.xmlが自動で更新されるのが気になる場合は「アプリケーション記述ファイルへの〜手動で管理します。」にチェックを入れましょう。<br />
AIR設定画面を開くと、helloane-app.xmlが作成または更新されます。</p>
<h3>●ネイティブ拡張のためのスクリプト記述</h3>
<p>メインタイムラインにダイナミックテキストフィールドを作成し、インスタンス名を「txt」とします。<br />
フォントは_ゴシックか_等幅です。サイズは文字が読めればいくつでも構いません。</p>
<p>今回は簡単なサンプルなので、直接メインタイムラインにコードを記述します。<br />
swcにパスを通しているのでコードアシストが機能すると思います。</p>
<pre class="brush: as3; title: ; notranslate">import com.cda244.helloworldane.HelloWorldANE;
import flash.text.TextField;
import flash.events.MouseEvent;

var txt:TextField;

var h:HelloWorldANE = new HelloWorldANE();

txt.addEventListener(MouseEvent.CLICK, sClick );
txt.text=&quot;Tap here\n&quot;;

function sClick(e:MouseEvent):void
{
	var str:String=h.callSayHello()+&quot;\n&quot;;
	txt.appendText(str);
}</pre>
<p>ステージ上のテキストフィールドをタップするたびにネイティブ拡張ライブラリから「Hello World」の文字列を受け取って表示します。</p>
<h3>●helloane-app.xmlを修正</h3>
<p>自動で書き出されるapp.xmlですが、ネイティブ拡張のために追加記述する箇所があります。<br />
applicationタグの下、androidタグやiconタグと同列に以下のextensionsタグを追加します。</p>
<pre class="brush: xml; title: ; notranslate">&lt;extensions&gt;
	&lt;extensionID&gt;com.cda244.helloworldane.HelloWorldANE&lt;/extensionID&gt;
&lt;/extensions&gt;</pre>
<p>extensionIDの中は、前回作成したextension.xml内のidタグと同じものです。</p>
<h3>●swfの書き出し</h3>
<p>flaファイルに戻って、swfを書き出します。<br />
ムービープレビューをしても画面が立ち上がりませんが、swfが書き出されています。</p>
<h3>●apkにパッケージ</h3>
<p>CS5.5では直接パッケージできないので、コマンドラインに以下の様に入力します。<br />
改行していますが１行で入力してください。<br />
<code>adt -package<br />
 -target apk<br />
 -storetype pkcs12<br />
 -keystore test.p12 helloane.apk helloane-app.xml helloane.swf<br />
 -extdir libs</code><br />
 test.p12やhelloane.apkは各自の環境に合わせて適宜修正して下さい。<br />
パスワード入力後、やっとapkが形になります。</p>
<h3>●端末にインストール</h3>
<p>USBで端末が接続している場合、以下の方法でインストールする事ができます。<br />
コマンドラインに以下の様に１行で入力します。<br />
<code>adb install -r helloane.apk</code><br />
-r をつけると、上書きインストールになるので、頻繁に端末で確認する場合に便利です。</p>
<p>「Success」と表示されたら無事終了です。アプリケーションを起動してテキストフィールドをタップしてみて下さい。タップの度に「Hello World」が表示されると思います。</p>
<h3>●感想</h3>
<p>慣れれば気にならないのでしょうが、Flash、Eclipse、コマンドラインを行ったり来たりで作業する事になりそうで、精神的なハードルが高いですね。<br />
ひとまず、色々使えそうな通知、バイブレーション、トースト、インテント投げ、あたりのaneを作成しながら体に覚え込ませる必要がありそうです。Flash Builderの記事の方が圧倒的ですが、CS5.5でもネイティブ連携ができる、という事がわかったので一安心です。</p>
<h3>●終わりに、すごくためになった参考</h3>
<p>長々書きましたが、こちらの２つを見ればズバリわかります。<br />
・<a href="http://mossamina.blog99.fc2.com/blog-entry-31.html" title="第29回「Flash CS 5.5でネイティブ拡張ライブラリを使ってみる。【AIR for Android編】」の巻" target="_blank">第29回「Flash CS 5.5でネイティブ拡張ライブラリを使ってみる。【AIR for Android編】」の巻 -特産の「もっさみな」</a><br />
・<a href="http://www.youtube.com/watch?v=MRcoJ6ClLqo" title="AIR 3.0 - Compile an ANE app with command line on Windows" target="_blank">AIR 3.0 &#8211; Compile an ANE app with command line on Windows</a> (英語の解説動画)</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2011/12/01-89/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、２</title>
		<link>http://cda244.com/2011/12/01-78/</link>
		<comments>http://cda244.com/2011/12/01-78/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 05:56:49 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=78</guid>
		<description><![CDATA[Flash CS5.5環境で、Android向けのANEにゼロから取り組んでみましたので手順をご紹介します。 前回は準備と流れの紹介でした。今回はaneファイルのパッケージ化部分の紹介です。 ●jar作成 EclipseでJavaプロジェクトを作成します。 もうこちらの記事の内容がそのままズバリです。 AIR 3 Native Extension 13 Try AIR for Android + ANE in Java -AKABANA こちらの記事の、「3. コンパイルからのJarを作成」までがjar作成の流れになります。 コード中の&#8221;SayHello&#8221;がflashからswcを通して呼ぶ関数名として機能します。 ●extension.xml作成 この拡張の説明になるファイルで、下の様な形です。 私が作ったサンプルで言うと、 idタグは「com.cda244.helloworldane.HelloWorldANE」 nativeLibraryタグは「helloane.jar」 (全て同階層に作ったので) initializer、finalizerタグはどちらも「com.cda244.helloworldane.HelloWorldANE」 です。 ●swc作成（ドキュメントクラス作成） ネイティブとやり取りする時の窓口になります。ここでやっとflashをさわります。 library.flaを作成し、プレイヤーバージョンはAIR2.6(前回の事前準備で3または3.1になっている)を指定します。 次に、ドキュメントクラスを以下の様に作成します。 パッケージはextension.xmlのidタグと合わてあります。 flashからは、callSayHello() を通してネイティブ拡張内の SayHello 関数を呼ぶ事になります。 &#8230;<p class="read-more"><a href="http://cda244.com/2011/12/01-78/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Flash CS5.5環境で、Android向けのANEにゼロから取り組んでみましたので手順をご紹介します。<br />
<a href="http://cda244.com/2011/12/01-70/" title="Android環境のANEにゼロから取り組んでみる、１">前回は準備と流れの紹介でした。</a>今回はaneファイルのパッケージ化部分の紹介です。<br />
<span id="more-78"></span></p>
<h3>●jar作成</h3>
<p>EclipseでJavaプロジェクトを作成します。<br />
もうこちらの記事の内容がそのままズバリです。<br />
<a href="http://akabana.info/2011/08/16/air-native-extension-13-try-air-for-android-ane-in-java/" title="AIR 3 Native Extension 13 Try AIR for Android + ANE in Java" target="_blank">AIR 3 Native Extension 13 Try AIR for Android + ANE in Java -AKABANA</a><br />
こちらの記事の、「3. コンパイルからのJarを作成」までがjar作成の流れになります。<br />
コード中の&#8221;SayHello&#8221;がflashからswcを通して呼ぶ関数名として機能します。</p>
<h3>●extension.xml作成</h3>
<p>この拡張の説明になるファイルで、下の様な形です。</p>
<pre class="brush: xml; title: ; notranslate">
&lt;extension xmlns=&quot;http://ns.adobe.com/air/extension/2.5&quot;&gt;
    &lt;id&gt;拡張名。一意に決まるもの&lt;/id&gt;
    &lt;versionNumber&gt;1.0.0&lt;/versionNumber&gt;
    &lt;platforms&gt;
        &lt;platform name=&quot;Android-ARM&quot;&gt;
        	&lt;applicationDeployment&gt;
                &lt;nativeLibrary&gt;jarファイルのパス&lt;/nativeLibrary&gt;
                &lt;initializer&gt;jar内のメインとなるクラス&lt;/initializer&gt;
                &lt;finalizer&gt;jar内のメインとなるクラス&lt;/finalizer&gt;
            &lt;/applicationDeployment&gt;
        &lt;/platform&gt;
    &lt;/platforms&gt;
&lt;/extension&gt;
</pre>
<p>私が作ったサンプルで言うと、<br />
idタグは「com.cda244.helloworldane.HelloWorldANE」<br />
nativeLibraryタグは「helloane.jar」 (全て同階層に作ったので)<br />
initializer、finalizerタグはどちらも「com.cda244.helloworldane.HelloWorldANE」<br />
です。</p>
<h3>●swc作成（ドキュメントクラス作成）</h3>
<p>ネイティブとやり取りする時の窓口になります。ここでやっとflashをさわります。<br />
library.flaを作成し、プレイヤーバージョンはAIR2.6(前回の事前準備で3または3.1になっている)を指定します。</p>
<p>次に、ドキュメントクラスを以下の様に作成します。</p>
<pre class="brush: as3; title: ; notranslate">
package com.cda244.helloworldane
{

	import flash.display.*;
	import flash.external.ExtensionContext;

	public class HelloWorldANE extends MovieClip
	{

		private var context:ExtensionContext;

		public function HelloWorldANE()
		{
			//extension.xmlのidタグに指定したクラス名でNative Extensionのコンテキストを取得
			context = ExtensionContext.createExtensionContext(&quot;com.cda244.helloworldane.HelloWorldANE&quot;, null);
		}

		public function callSayHello():String
		{
			//コンテキスト内にSayHelloという名前で登録されている関数を呼ぶ。
			var res:String = context.call( &quot;SayHello&quot; ) as String;
			return res;
		}

	}
}
</pre>
<p>パッケージはextension.xmlのidタグと合わてあります。<br />
flashからは、callSayHello() を通してネイティブ拡張内の SayHello 関数を呼ぶ事になります。</p>
<h3>●swc作成（swc書き出し）</h3>
<p>パブリッシュ設定を開いて、SWCの書き出しにチェックを入れます。<br />
aneをパッケージする際、swfも必要になるので、swfもチェック状態のままにして書き出します。<br />
library.swfとlibrary.swcが書き出されます。</p>
<h3>●aneファイルのパッケージ化</h3>
<p>コマンドライン上で以下のコマンドを入力します。<br />
長いので改行してますが１行です。「」内は適宜書き換えてください。<br />
<code>adt -package -storetype pkcs12<br />
 -keystore 「証明書(.p12ファイル)」<br />
 -target ane 「aneファイル名」 extension.xml<br />
 -swc library.swc<br />
 -platform Android-ARM library.swf 「jarファイル」</code></p>
<p>あとは証明書に設定したパスワードを入力すると指定したファイル名でaneファイルが書き出されます。<br />
フォルダ構造は以下の様な状態です。<br />
classesフォルダにはlibrary.swfのドキュメントクラス(HelloWorldANE.as)が入っています。<br />
<div id="attachment_86" class="wp-caption alignnone" style="width: 310px"><a href="http://cda244.com/wordpress/wp-content/uploads/2011/12/android_ane_2.jpg"><img src="http://cda244.com/wordpress/wp-content/uploads/2011/12/android_ane_2-300x96.jpg" alt="aneファイル作成時のフォルダ" title="android_ane_2" width="300" height="96" class="size-medium wp-image-86" /></a><p class="wp-caption-text">aneファイル作成時のフォルダ</p></div><br />
次回でラスト、<a href="http://cda244.com/2011/12/01-89/" title="Android環境のANEにゼロから取り組んでみる、３">本体になるswf（というかAIR）を作成後、apkにパッケージして端末にインストールします。</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2011/12/01-78/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flash CS5.5でAndroidのネイティブ拡張にゼロから取り組んでみる、１</title>
		<link>http://cda244.com/2011/12/01-70/</link>
		<comments>http://cda244.com/2011/12/01-70/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 04:29:01 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=70</guid>
		<description><![CDATA[Flash CS5.5環境で、Android向けのANEにゼロから取り組んでみましたので手順をご紹介します。 手順といっても、すでにいくつかブログ等で取り上げられている情報をAndroidに集約して取りまとめたものになります。 最初の一歩として、javaからテキストを受け取ってflash上のテキストフィールドにメッセージを出します。 最初に結論言ってしまうと、「すごくめんどくさい」。 長くなりそうなので何回かに分けます。 ●使用するソフト、コマンド ・Flash CS5.5 (swf、swcの書き出し) ・Eclipse（jar書き出し） ・コマンド adt (aneのパッケージ、apkのパッケージ) ・コマンド adb (端末にapkをインストール) ●事前準備 CS5.5、Eclipseのインストールはもちろん、他に必要になる各種設定をしておいてください。 参考 ・Flash Professional CS5.5 で Flash Player 11 と AIR 3 を使う方法 -akihiro kamijo ・Androidアプリの開発環境であるEclipseの使い方を知る -ASCII.jp ●全体のおおまかな流れ １、ネイティブ側のjarを作成。 ２、jarとの窓口になるswcを作成。 ３、jarとswcをaneにパッケージ。 ４、AIRに必要なswfを作成。 &#8230;<p class="read-more"><a href="http://cda244.com/2011/12/01-70/">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Flash CS5.5環境で、Android向けのANEにゼロから取り組んでみましたので手順をご紹介します。<br />
手順といっても、すでにいくつかブログ等で取り上げられている情報をAndroidに集約して取りまとめたものになります。<br />
最初の一歩として、javaからテキストを受け取ってflash上のテキストフィールドにメッセージを出します。<br />
最初に結論言ってしまうと、「すごくめんどくさい」。<br />
長くなりそうなので何回かに分けます。</p>
<p><span id="more-70"></span></p>
<h3>●使用するソフト、コマンド</h3>
<p>・Flash CS5.5 (swf、swcの書き出し)<br />
・Eclipse（jar書き出し）<br />
・コマンド adt (aneのパッケージ、apkのパッケージ)<br />
・コマンド adb (端末にapkをインストール)</p>
<h3>●事前準備</h3>
<p>CS5.5、Eclipseのインストールはもちろん、他に必要になる各種設定をしておいてください。<br />
参考<br />
・<a href="http://cuaoar.jp/2011/10/flash-professional-cs55-1.html" title="Flash Professional CS5.5 で Flash Player 11 と AIR 3 を使う方法" target="_blank">Flash Professional CS5.5 で Flash Player 11 と AIR 3 を使う方法 -akihiro kamijo</a><br />
・<a href="http://ascii.jp/elem/000/000/533/533805/" title="Androidアプリの開発環境であるEclipseの使い方を知る" target="_blank">Androidアプリの開発環境であるEclipseの使い方を知る -ASCII.jp</a></p>
<h3>●全体のおおまかな流れ</h3>
<p>１、ネイティブ側のjarを作成。<br />
２、jarとの窓口になるswcを作成。<br />
３、jarとswcをaneにパッケージ。<br />
４、AIRに必要なswfを作成。<br />
５、swf、aneもろもろをapkにパッケージして完成。</p>
<p><a href="http://cda244.com/2011/12/01-78/" title="Android環境のANEにゼロから取り組んでみる、２">次回はaneファイル作成の手順です。</a><br />
上の流れで行くと、１〜３に該当します。</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2011/12/01-70/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>まだ生きてたクロスドメインの穴</title>
		<link>http://cda244.com/2011/08/26-56/</link>
		<comments>http://cda244.com/2011/08/26-56/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 05:19:37 +0000</pubDate>
		<dc:creator>cda244</dc:creator>
				<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://cda244.com/?p=56</guid>
		<description><![CDATA[外部ドメインの画像のビットマップ処理なんかで必要になるcrossdomain.xmlですが、Loader.loadBytesを使うと無視できる穴はまだ塞がっていない様子。 以下が50行弱の簡単なコードです。 ※2011.8.26現在。 いつも通りLoaderに画像を読ませた後、別のLoaderで先ほどのLoaderのバイトデータを読み込むとクロスドメインの設定が無視されます。 wonderflにも載ってますね。＞外部画像をビットマップ化する 2010年に実案件で１回だけ使いましたが、まだ閉じられていないようですね。]]></description>
			<content:encoded><![CDATA[<p>外部ドメインの画像のビットマップ処理なんかで必要になるcrossdomain.xmlですが、Loader.loadBytesを使うと無視できる穴はまだ塞がっていない様子。<br />
以下が50行弱の簡単なコードです。<br />
※2011.8.26現在。<br />
<span id="more-56"></span></p>
<pre class="brush: as3; title: ; notranslate">
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;

	public class Main extends MovieClip
	{

		private const PATH:String=外部画像のアドレス;

		private var loader_1:Loader;
		private var loader_2:Loader;

		public function Main()
		{

			loader_1 = new Loader();
			loader_1.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComp);
			loader_1.load( new URLRequest( PATH ) );
		}

		private function loadComp(e:Event):void
		{
			loader_2 = new Loader();
			loader_2.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComp_2);
			loader_2.loadBytes(loader_1.contentLoaderInfo.bytes);
		}

		private function loadComp_2(e:Event):void
		{
			var bmpData:BitmapData = new BitmapData( loader_2.width, loader_2.height, true );
			bmpData.draw( loader_2 );	//ここでエラーになるはず

			var bmp:Bitmap = new Bitmap( bmpData );
			bmp.smoothing=true;
			bmp.rotation=5;

			addChild( bmp );
		}

	}

}
</pre>
<p>いつも通りLoaderに画像を読ませた後、別のLoaderで先ほどのLoaderのバイトデータを読み込むとクロスドメインの設定が無視されます。<br />
wonderflにも載ってますね。＞<a href="http://wonderfl.net/c/d8DH" title="外部画像をビットマップ化する" target="_blank">外部画像をビットマップ化する</a><br />
2010年に実案件で１回だけ使いましたが、まだ閉じられていないようですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://cda244.com/2011/08/26-56/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

