<?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>TRININE</title>
	<atom:link href="http://trinine.net/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://trinine.net/blog</link>
	<description>Flash,AIR,JavaScript,etc</description>
	<lastBuildDate>Wed, 29 Feb 2012 02:09:35 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>AirアプリからのTwitter投稿あれこれ</title>
		<link>http://trinine.net/blog/?p=639</link>
		<comments>http://trinine.net/blog/?p=639#comments</comments>
		<pubDate>Wed, 29 Feb 2012 02:09:35 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[stageWebView]]></category>
		<category><![CDATA[Tweetr]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=639</guid>
		<description><![CDATA[仕事でAir for ios/Androidでアプリを制作していました。 このアプリでTwitter投稿機能を実装したのですが、いろいろ試行錯誤したのでメモ。 　 == アプリ登録をして、OAuth認証するつぶやき方 == きちんとOAuth認証する方法です。 https://dev.twitter.com/で、アプリ登録をして、 ・Consumer key ・Consumer secret を発行してもらいます。 Airのみで認証を通すのはかなり大変そうだったのでライブラリを使います。⇒Tweetr(http://wiki.swfjunkie.com/tweetr) アプリ内でStageWebViewを生成、それを受け渡して認証ページを展開します。 取得したConsumer keyとConsumer secretはAOuth.asにセットします。 こちらの記事が大変参考になりました。 http://blog.appforandroid.info/?p=411 実行してTwitterのID/PASSを入力すれば、上記Blogの参考ソース //OAuthが終わったらTweetrでやりたい放題できます。 のところまで行きつくはず。 ただしtweetr.updateStatusでつぶやいてみたところ、 日本語を含む投稿がエラーになる。 これはTweetr.asの1893行目escape(value);を、escapeMultiByte(value); にしたところ解決、と思いきや記号『.』を含んでもエラー。 よく分からないが、自前でデコードしてやる。 そこらへんのコード。 もしかしたら『.』以外にもダメなのがあるかもしれない。 そのあと下のつぶやき方法に変えたので検証不十分、申し訳ない。 　 == AOuthなしでつぶやく == 今回特定の文言を入力欄にいれた上で、自由に改編・付け足ししてつぶやいてもらうだけ、 別にその人のフォロワー取ってくるわけでもなし、アプリ内に自前で入力フィールド作るのも面倒、 よくある文言付きでTwitterにリンクするのをStageWebView内でやればいいんじゃないかと。 これで勝手に個人認証ページが挟まって、アプリ内からつぶやくことができる。 注意点としてはページ遷移をする度URLを監視して、つぶやき後にStageWebViewを破棄する部分。 iPhoneや多くのAndroidでは、 https://mobile.twitter.com/ に飛ばされるのだが、最近発売されたAndroid4.0機種では、 https://twitter.com/ に遷移する。 その分リダイレクトが一回多いらしくStageWebViewをstop()しておかないと、 破棄してからページを開こうとしてブラウザを立ち上ようとするという現象が起こった 以上。]]></description>
			<content:encoded><![CDATA[<p><a href="http://trinine.net/blog/?p=639"><img class="alignnone size-full wp-image-582" title="20120228" src="http://trinine.net/blog/wp-content/uploads/2012/02/20120228.png" alt="AirアプリからのTwitter投稿あれこれ" width="550" height="177" /></a></p>
<p>仕事でAir for ios/Androidでアプリを制作していました。<br /> このアプリでTwitter投稿機能を実装したのですが、いろいろ試行錯誤したのでメモ。</p>
<p>　</p>
<p><span id="more-639"></span></p>
<p><strong>== アプリ登録をして、OAuth認証するつぶやき方 ==</strong></p>
<p>きちんとOAuth認証する方法です。<br /> <a href="https://dev.twitter.com/">https://dev.twitter.com/</a>で、アプリ登録をして、<br /> <strong>・Consumer key<br /> ・Consumer secret</strong><br /> を発行してもらいます。<br /> Airのみで認証を通すのはかなり大変そうだったのでライブラリを使います。<br /><strong>⇒Tweetr</strong>(<a href="http://wiki.swfjunkie.com/tweetr">http://wiki.swfjunkie.com/tweetr</a>)</p>
<p>アプリ内でStageWebViewを生成、それを受け渡して認証ページを展開します。<br /> 取得したConsumer keyとConsumer secretはAOuth.asにセットします。<br /> こちらの記事が大変参考になりました。<br /> <a href="http://blog.appforandroid.info/?p=411">http://blog.appforandroid.info/?p=411</a></p>
<p>実行してTwitterのID/PASSを入力すれば、上記Blogの参考ソース<br /> <strong>//OAuthが終わったらTweetrでやりたい放題できます</strong>。<br /> のところまで行きつくはず。<br /> ただし<strong>tweetr.updateStatus</strong>でつぶやいてみたところ、<br /> 日本語を含む投稿がエラーになる。<br /> これはTweetr.asの1893行目<strong>escape(value);</strong>を、<strong>escapeMultiByte(value);</strong><br /> にしたところ解決、と思いきや記号『.』を含んでもエラー。<br /> よく分からないが、自前でデコードしてやる。<br /> そこらへんのコード。</p>
<p>
<pre class="brush: as3; title: ; notranslate">
private function strEscape(value:String):String
{
	if (_oAuth)
	{
		/*元記述
		var str:String = escape(value);*/
		var str:String = escapeMultiByte(value);
		str = str.replace(&quot;%2E&quot;, &quot;.&quot;);
		return str;
	}
	return value;
 }
</pre>
</p>
<p>もしかしたら『.』以外にもダメなのがあるかもしれない。<br /> そのあと下のつぶやき方法に変えたので検証不十分、申し訳ない。</p>
<p>　</p>
<p><strong>== AOuthなしでつぶやく ==</strong></p>
<p>今回特定の文言を入力欄にいれた上で、自由に改編・付け足ししてつぶやいてもらうだけ、<br /> 別にその人のフォロワー取ってくるわけでもなし、アプリ内に自前で入力フィールド作るのも面倒、<br /> よくある文言付きでTwitterにリンクするのをStageWebView内でやればいいんじゃないかと。</p>
<p>
<pre class="brush: as3; title: ; notranslate">
package
{
     import com.swfjunkie.tweetr.Tweetr;
     import com.swfjunkie.tweetr.oauth.OAuth;
     import com.swfjunkie.tweetr.oauth.events.OAuthEvent;

     import flash.media.StageWebView;
     import flash.events.ErrorEvent;
     import flash.events.Event;
     import flash.events.LocationChangeEvent;
     import flash.geom.Rectangle;
     import flash.display.Sprite;

     public class TweetMain extends Sprite
     {
          private var tweetr:Tweetr;
          private var webview:StageWebView;

          public function TweetMain()
          {
               if (stage) init();
               else addEventListener(Event.ADDED_TO_STAGE, init);
          }

          private function init(e:Event = null):void {

               removeEventListener(Event.ADDED_TO_STAGE, init);

               //StageWebView用意
               webview = new StageWebView();
               webview.addEventListener(LocationChangeEvent.LOCATION_CHANGE, pageChange);
               webview.addEventListener(ErrorEvent.ERROR, pageError);

               webview.stage = this.stage;
               webview.viewPort = new Rectangle(0, 0, 640, 960);
               //入力欄に入れておきたい文言をクエリで
               var url:String = &quot;http://twitter.com?status=&quot; + &quot;hogehoge&quot; +  &quot; %23ハッシュタグ&quot;;
               webview.loadURL(url);
          }

         private function pageError(e:ErrorEvent):void
          {
               //ページエラー
          }

          //つぶやき完了URLを判定してStageWebView閉じる
          protected function pageChange(e:LocationChangeEvent):void
          {
               if(e.location == &quot;https://mobile.twitter.com/&quot; || e.location == &quot;https://twitter.com/&quot; ){
                    webview.stop();
                    webview.dispose();
                    webview = null;
               }
          }

     }
}
</pre>
<p>これで勝手に個人認証ページが挟まって、アプリ内からつぶやくことができる。<br /> 注意点としてはページ遷移をする度URLを監視して、つぶやき後にStageWebViewを破棄する部分。<br /> iPhoneや多くのAndroidでは、<br /> <strong>https://mobile.twitter.com/</strong><br /> に飛ばされるのだが、最近発売されたAndroid4.0機種では、<br /> <strong>https://twitter.com/</strong><br /> に遷移する。<br /> その分リダイレクトが一回多いらしくStageWebViewをstop()しておかないと、<br /> 破棄してからページを開こうとしてブラウザを立ち上ようとするという現象が起こった</p>
<p>以上。</p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=639</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActionScript Beautifl Code〜Beautifl: Flash Gallery of wonderfl〜 の紹介</title>
		<link>http://trinine.net/blog/?p=523</link>
		<comments>http://trinine.net/blog/?p=523#comments</comments>
		<pubDate>Sun, 12 Jun 2011 16:05:09 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=523</guid>
		<description><![CDATA[昨日の記事のイベントでも登壇されたClockMaker 池田さんが執筆した書籍ActionScript Beautifl Code〜Beautifl: Flash Gallery of wonderfl〜 何の因果か自分の拙いサンプルも載っていることから献本いただきましたので紹介させていただきます。 ご存知Wonderflに投稿された数多くのFlashの中から、ゲーム・物理演算などのカテゴリ毎に池田さんがえいやと選ばれた作品の解説本です。なので入門用ではないです、ある程度スクリプト書いたことある人向け。 しかしながら古今東西様々なFlasherのアイデア、発想なんかが垣間見えつつ、定石からちょっとトリッキーなテクニックまで習得できるかなりお得な本だと思います。Wonderflで見たときは、もう何かスゴすぎて理解することを放棄したあの作品も載ってるかもしれません。レッツ再チャレンジです、頑張ります。]]></description>
			<content:encoded><![CDATA[<p><a href="http://trinine.net/blog/?p=523"><img class="alignnone size-full wp-image-582" title="ActionScript Beautifl Code〜Beautifl: Flash Gallery of wonderfl〜 の紹介" src="http://trinine.net/blog/wp-content/uploads/2011/06/20110613.jpg" alt="ActionScript Beautifl Code〜Beautifl: Flash Gallery of wonderfl〜 の紹介" width="550" height="168" /></a></p>
<p><a title="ADC MEETUP ROUND01 メモ" href="http://trinine.net/blog/?p=509">昨日の記事</a>のイベントでも登壇された<a href="http://clockmaker.jp/blog/" target="_blank">ClockMaker</a> 池田さんが執筆した書籍<br /><a href="http://www.amazon.co.jp/gp/product/4862671098/ref=as_li_qf_sp_asin_tl?ie=UTF8&amp;tag=trnn-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=4862671098">ActionScript Beautifl Code〜Beautifl: Flash Gallery of wonderfl〜</a><br />
何の因果か自分の拙いサンプルも載っていることから献本いただきましたので<br />紹介させていただきます。</p>
<p><span id="more-523"></span></p>
<p><a href="http://www.amazon.co.jp/gp/product/4862671098/ref=as_li_qf_sp_asin_il?ie=UTF8&amp;tag=trnn-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=4862671098"><img  src="http://ws.assoc-amazon.jp/widgets/q?_encoding=UTF8&amp;Format=_SL160_&amp;ASIN=4862671098&amp;MarketPlace=JP&amp;ID=AsinImage&amp;WS=1&amp;tag=trnn-22&amp;ServiceVersion=20070822" border="0" alt="" align="left" /></a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.jp/e/ir?t=trnn-22&amp;l=as2&amp;o=9&amp;a=4862671098" border="0" alt="" width="1" height="1" />
</p>
<p><br clear="both">ご存知<a href="http://wonderfl.net/" target="_blank">Wonderfl</a>に投稿された数多くのFlashの中から、ゲーム・物理演算などの<br />カテゴリ毎に池田さんがえいやと選ばれた作品の解説本です。<br />なので入門用ではないです、ある程度スクリプト書いたことある人向け。<br /> しかしながら古今東西様々なFlasherのアイデア、発想なんかが垣間見えつつ、<br />定石からちょっとトリッキーなテクニックまで習得できるかなりお得な本だと思います。<br />Wonderflで見たときは、もう何かスゴすぎて理解することを放棄した<br />あの作品も載ってるかもしれません。レッツ再チャレンジです、頑張ります。</p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=523</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADC MEETUP ROUND01 メモ</title>
		<link>http://trinine.net/blog/?p=509</link>
		<comments>http://trinine.net/blog/?p=509#comments</comments>
		<pubDate>Sun, 12 Jun 2011 07:08:06 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[セミナー]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[イベント]]></category>
		<category><![CDATA[セミナーレポート]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=509</guid>
		<description><![CDATA[6月11日に開催されたAdobe Developer Connection(ADC)へ行ってきたのでそのメモ書き。 途中入場だったのと集中力がないので相当抜けがありますが、まぁメモ書きとして。 SESSION2 スマートフォン向けWebサイトの制作 ・スマートフォンサイトの制作方法PC用のページを制作したら、スマートフォン用のCSS、JSを別途作成。 CSS3 Media Queriesによりデバイス毎にJS/CSSの切り替えができる。大抵の場合スマートフォンの横幅にあわせてレイアウトを修正する必要があるので、 複数カラムを1カラムにするために要素の回りこみを変更したり、不要な要素をdisplay:noneしたり。 Dreamweaver CS5.5 ではライブプレビュー機能で、 スマートフォンでの見た目を再現しながら編集ができるよ。・Androidの困った仕様（機種により） ピンチアウトしたときの幅でメディアクエリが解除されてしまう。 （横幅が大きいと判断されてしまい？PC用のCSSが適用される） 対策として、user-scalableをnoにする。 拡大率をAndroidのみウィンドウの幅より少し小さくしてやる。全体縮小しても文字サイズはそのままになってしまうので、 拡大率１以下の場合は文字サイズも合わせて小さくする SESSION3 ネイティブアプリに変わる、新しいアプリ開発スタイル ・jQuery Mobile HTML5のみでスマートフォンアプリが開発可能に。 data属性を使ってマークアップにセマンティクスを与えることができる。簡単に作れるゆえカスタマイズが大変というデメリットも。アプリ内ページ遷移が簡単につくれる。 div id=&#8221;page2&#8243;とかにすると２ページ目がアプリに作られ、 戻る・進むの履歴が効く。 ウェブ上にコンテンツを置くので、アップデートが楽。 グラフィカルな表現は苦手（業務用、ユーティティに向いている）・PhoneGap（ネイティブアプリビルド）さらにこの技術を使えば、完全にネイティブアプリ化できる。 カメラ機能などブラウザアプリからアクセスできない機能にも対応。ただし使えない機能もある、音声認識など。 これも当然ながらゲームアプリなどには向かない。 アプリ制作の低コスト化が見込める。 SESSION4 FlashCS5.5の変更点 ・イラレとの連携強化 テキストまわりタブやフォントサイズなども正確に再現されるように。・コンテンツをステージに合わせてリサイズ PhotoShopの解像度変更みたいな。 中のアニメーションも一緒にリサイズしてくれる。マルチスクリーン対応には９グリッドが大活躍。・ベクター画像のビットマップ化 書きだした際にベクターをビットマップ化してしまう （スクリプトから操作するcashAsBitmapとは違う）・AIR for iOS iOS4&#38;3GS以上対応なので注意。 AIRforAndroidアプリをiPhoneアプリへさっくり移植していた。 iPhone上部のメニューはAIR for iOSの書き出し設定で消せるが、 それにより通信のインジケーターも消してしまう。 それを理由に審査を落とされる場合があるので注意。 SESSION5 Flashによるマルチデバイスアプリ開発ワークフロー ・Flash CS5.5の機能紹介 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://trinine.net/blog/?p=509"><img class="size-full wp-image-521" title="ADC MEETUP ROUND01" src="http://trinine.net/blog/wp-content/uploads/2011/06/20110612.jpg" alt="ADC MEETUP ROUND01" width="550" height="170" /></a></p>
<p>6月11日に開催された<a href="http://www.adobe.com/jp/joc/adc/meetup/round01/">Adobe Developer Connection(ADC)</a>へ行ってきたのでそのメモ書き。<br /> 途中入場だったのと集中力がないので相当抜けがありますが、まぁメモ書きとして。</p>
<p><span id="more-509"></span></p>
<hr class="entry_separate_1" />
<h4><strong>SESSION2</strong><br /> スマートフォン向けWebサイトの制作</h4>
<p><strong>・スマートフォンサイトの制作方法</strong><br />PC用のページを制作したら、スマートフォン用のCSS、JSを別途作成。<br /> <a href="http://www.webdesignerwall.com/tutorials/css3-media-queries/">CSS3 Media Queries</a>によりデバイス毎にJS/CSSの切り替えができる。<br />大抵の場合スマートフォンの横幅にあわせてレイアウトを修正する必要があるので、<br /> 複数カラムを1カラムにするために要素の回りこみを変更したり、不要な要素をdisplay:noneしたり。<br /> Dreamweaver CS5.5 ではライブプレビュー機能で、<br /> スマートフォンでの見た目を再現しながら編集ができるよ。<br /><strong>・Androidの困った仕様（機種により）</strong><br /> ピンチアウトしたときの幅でメディアクエリが解除されてしまう。<br /> （横幅が大きいと判断されてしまい？PC用のCSSが適用される）<br /> 対策として、user-scalableをnoにする。<br /> 拡大率をAndroidのみウィンドウの幅より少し小さくしてやる。<br />全体縮小しても文字サイズはそのままになってしまうので、<br /> 拡大率１以下の場合は文字サイズも合わせて小さくする</p>
<h4><strong>SESSION3</strong><br /> ネイティブアプリに変わる、新しいアプリ開発スタイル</h4>
<p>・<strong><a href="http://jquerymobile.com/">jQuery Mobile</a></strong><br /> HTML5のみでスマートフォンアプリが開発可能に。<br /> data属性を使ってマークアップにセマンティクスを与えることができる。<br />簡単に作れるゆえカスタマイズが大変というデメリットも。<br />アプリ内ページ遷移が簡単につくれる。<br /> div id=&#8221;page2&#8243;とかにすると２ページ目がアプリに作られ、<br /> 戻る・進むの履歴が効く。<br /> ウェブ上にコンテンツを置くので、アップデートが楽。<br /> グラフィカルな表現は苦手（業務用、ユーティティに向いている）<br />・<strong><a href="http://www.phonegap.com/">PhoneGap</a>（ネイティブアプリビルド）<br /></strong>さらにこの技術を使えば、完全にネイティブアプリ化できる。<br /> カメラ機能などブラウザアプリからアクセスできない機能にも対応。<br />ただし使えない機能もある、音声認識など。<br /> これも当然ながらゲームアプリなどには向かない。<br /> アプリ制作の低コスト化が見込める。</p>
<h4><strong>SESSION4</strong><br /> FlashCS5.5の変更点</h4>
<p><strong>・イラレとの連携強化</strong><br /> テキストまわりタブやフォントサイズなども正確に再現されるように。<br />・<strong>コンテンツをステージに合わせてリサイズ</strong><br /> PhotoShopの解像度変更みたいな。<br /> 中のアニメーションも一緒にリサイズしてくれる。<br />マルチスクリーン対応には９グリッドが大活躍。<br />・<strong>ベクター画像のビットマップ化</strong><br /> 書きだした際にベクターをビットマップ化してしまう<br /> （スクリプトから操作するcashAsBitmapとは違う）<br />・<strong>AIR for iOS</strong><br /> iOS4&amp;3GS以上対応なので注意。<br /> AIRforAndroidアプリをiPhoneアプリへさっくり移植していた。<br /> iPhone上部のメニューはAIR for iOSの書き出し設定で消せるが、<br /> それにより通信のインジケーターも消してしまう。<br /> それを理由に審査を落とされる場合があるので注意。</p>
<h4><strong>SESSION5</strong><br /> Flashによるマルチデバイスアプリ開発ワークフロー</h4>
<p>・<strong>Flash CS5.5の機能紹介</strong><br /> モバイル向けのコードスニペットが追加。<br /> スニペットを選んだら、対象となるオブジェクトにドラッグ＆ドロップ<br /> （ラインがにゅっと伸びます）するUIで定義ができる。<br /> アセットの共有機能で、<br /> 共通の素材/プロジェクトでマルチスクリーン対応できる。<br /> （修正がすべてのリリースに反映される）<br /> FlashBuilderとの連携強化<br /> どちらでもプロジェクトを開けるように。<br /> エディターとしてFBを使うと制作効率UP。<br /> リファクタリング、参照検索　etcが使える。<br /> インクリメントコンパイル（キャッシュ機能）で書き出しが高速化。</p>
<h4><strong>SESSION6</strong><br /> Flash Platform開発者が知らないと損をするFlex Mobile</h4>
<p>・<strong>アプリケーションテンプレート</strong><br />Flexモバイルプロジェクトは3種類<br /> ビューベース：ビューと管理するビューナビゲーター（複数ページ）<br /> タブ付き：ビューナビが複数（上より大規模なアプリに）<br /> 空白：ゼロから作りたい<br />・<strong>AIR for Androidの権限</strong><br /> 様々な機能を使用をON/OFFする<br />・<strong>スマートフォンのDPI（Dot Per Inch）</strong><br /> 端末のDPIを取得するAPIがある。<br /> DPIProviderにより、<br /> 160、240、320のいずれかに丸めることができる。<br />・<strong>ゲームアプリのデモ</strong><br />TigerMinesweeper（Androidマーケットにて配信中）<br /> MovieClipSWFLoaderで過去のSWFをそのまま使用している。<br />新規で機能追加したスコア登録部分はswfObject経由でつなぎこみ。<br />今度配信されるADCの記事で詳しく。</p>
<h4><strong>SESSION7</strong><br /> Flex 4.5 を使用したモバイルアプリケーションの開発</h4>
<p>公式に記事が。<br /><a href="http://www.adobe.com/jp/joc/devnet/flex/articles/flex_mobile_03.html">http://www.adobe.com/jp/joc/devnet/flex/articles/flex_mobile_03.html</a></p>
<h4><strong>ESSION8</strong><br /> Sneak Peeks &amp; 抽選会</h4>
<p>・<strong><a href="http://labs.adobe.com/technologies/wallaby/">Wallaby</a></strong><br /> FlashをHTML5・CSS3アニメーションに変換。<br />・<strong>Edge </strong><br /><a href="http://www.publickey1.jp/blog/10/flashhtml5edge.html">参考</a><br /> AEのようなインターフェイスのHTML5,CSS3アニメーションオーサリングツール。<br /> x,y座標、拡大率などプロパティ毎のタイムラインでアニメーションをつけていく。<br /> HTMLページを直接編集できるのが特徴で、Flaファイルのような編集用ファイルがない。<br /> アニメーションはjsonで保存され、元となったHTMLは無傷。<br /> そのためレガシーブラウザでは動かない元HTMLがそのまま表示される。<br />（代替コンテンツを用意する必要がない）<br /> 年内にベータ版？がリリース。<br />・<strong>FlashPlayerの3D表示デモ</strong><br /> モルヒル、StageVideoとかのあれ。</p>
<hr class="entry_separate_1" />
<p>というざっくりメモ。<br /> とりあえずEdgeは早く触ってみたいです、Adobe製品にしては起動が早いと絶賛されていましたｗ<br />CS5.5の紹介もいろいろありましたが、<br />思った以上に使えそうな新機能が盛り沢山で正直かなり欲しくなりました。<br />バグ修正で金取る気かよとか誰か言ってたようですが、ホントすいませんでした。</p>
<p>このADC、ROUND01と銘打ってるわけで、<br /> 今後も開催され、いろんな技術や新情報を開発者に届けてくれるらしいです。<br /> 100くらいまで続けたいとおっしゃっていたので乞うご期待ですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=509</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox3.6で空のURLをloadしてもIOErrorEventが取れない</title>
		<link>http://trinine.net/blog/?p=491</link>
		<comments>http://trinine.net/blog/?p=491#comments</comments>
		<pubDate>Mon, 14 Mar 2011 16:27:44 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[wonderfl]]></category>
		<category><![CDATA[バグ]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=491</guid>
		<description><![CDATA[Firefox3.6だけプリローダーが終了せず原因を調査したところ、 XMLから受け取った外部画像のパスが空のとき、 IOErrorEventによる読み込み失敗が取れていなかった。 IEやChrome,Firefoxも3.5等では読み込み失敗として取れていたのに・・・、 ハマったのでメモしておく。 Firefox3.6で読み込み失敗が取れない &#8211; wonderfl build flash online]]></description>
			<content:encoded><![CDATA[<p>Firefox3.6だけプリローダーが終了せず原因を調査したところ、<br />
XMLから受け取った外部画像のパスが空のとき、<br />
IOErrorEventによる読み込み失敗が取れていなかった。<br />
IEやChrome,Firefoxも3.5等では読み込み失敗として取れていたのに・・・、<br />
ハマったのでメモしておく。<br />
<script type="text/javascript" src="http://wonderfl.net/blogparts/eW0c/js"></script>
<p class="ttlBpWonderfl" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/eW0c" title="Firefox3.6で読み込み失敗が取れない">Firefox3.6で読み込み失敗が取れない &#8211; wonderfl build flash online</a></p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=491</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MBAを買いまして、ブラウザでPHPのエラー箇所を標示</title>
		<link>http://trinine.net/blog/?p=472</link>
		<comments>http://trinine.net/blog/?p=472#comments</comments>
		<pubDate>Sat, 26 Feb 2011 05:57:17 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[MacBook Air]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=472</guid>
		<description><![CDATA[MacBook Airを買いました。 FlashとかやるメインのPCはWinなので迷いましたが、今はDropboxやEvernoteなど環境に依存しない共有の仕組みが色々と整っているので問題ないだろうと。 その他Google Chromeのアカウントの同期、iPhoneアプリで圏外でもブックマークが読めるRead It Laterなど、本当に便利な世の中になったものです。 買った直後に発表された新MacBook Proのことは別に気にしていません。 さて、MacでPHPを弄ろうと思い、ローカルにWebサーバーを構築するフリーソフトMAMPをインストールしました。 Windowsだと多分XAMPPですね。Macにもありますが、どうせなら違うのを入れようとこっちを選びました。 PHPはすぐに動作するようになったのですが、スペルミス、構文エラー等発生したときにミスった箇所の行数などがデフォだと出ません、WinのXAMPだと出たんですが。 デバッグに不便なのでエラーを表示するよう設定する方法を調べましたが、PHPのバージョンなのか行数などが違っていたのでメモっておきます。 ■PHPのエラー行をブラウザに表示(PHP5.3.2) /Applications/MAMP/conf/php5/php.ini　の　277行目 display_errors = Off を Onに。 忘れずにMAMPの再起動をしましょう、エラー行数等の表示が出る筈です。 　 ということでこれからFlash以外にも、まだ慣れないMac環境でのメモとかも書くかもしれません。 新しいMBPはiPhoneでテザリングっぽいことが出来るかもとのことですが、全然気にしていません。]]></description>
			<content:encoded><![CDATA[<p><a href="http://trinine.net/blog/wp-content/uploads/2011/02/20110225.png" rel="shadowbox[post-472];player=img;"><img class="alignnone size-full wp-image-477" title="MAMPでPHP設定" src="http://trinine.net/blog/wp-content/uploads/2011/02/20110225.png" alt="" width="550" height="108" /></a><br />
MacBook Airを買いました。<br />
FlashとかやるメインのPCはWinなので迷いましたが、今は<a href="http://www.dropbox.com/" target="_blank">Dropbox</a>や<a href="http://www.evernote.com/about/intl/jp/" target="_blank">Evernote</a>など環境に依存しない共有の仕組みが色々と整っているので問題ないだろうと。<br />
その他Google Chromeのアカウントの同期、iPhoneアプリで圏外でもブックマークが読める<a href="http://readitlaterlist.com/" target="_blank">Read It Later</a>など、本当に便利な世の中になったものです。<br />
買った直後に発表された新MacBook Proのことは別に気にしていません。</p>
<p>さて、MacでPHPを弄ろうと思い、ローカルにWebサーバーを構築するフリーソフト<a href="http://www.mamp.info/en/index.html" target="_blank">MAMP</a>をインストールしました。<br />
Windowsだと多分<a href="http://www.apachefriends.org/jp/xampp-windows.html" target="_blank">XAMPP</a>ですね。Macにもありますが、どうせなら違うのを入れようとこっちを選びました。<br />
PHPはすぐに動作するようになったのですが、スペルミス、構文エラー等発生したときにミスった箇所の行数などがデフォだと出ません、WinのXAMPだと出たんですが。<br />
デバッグに不便なのでエラーを表示するよう設定する方法を調べましたが、PHPのバージョンなのか行数などが違っていたのでメモっておきます。</p>
<div style="padding:10px;  background-color:#B8D3E0;border:1px dashed blue">
<strong>■PHPのエラー行をブラウザに表示(PHP5.3.2)<br />
/Applications/MAMP/conf/php5/php.ini　の　277行目<br />
display_errors = Off を Onに。</strong>
</div>
<p>忘れずにMAMPの再起動をしましょう、エラー行数等の表示が出る筈です。<br />
<br />　<br />
ということでこれからFlash以外にも、まだ慣れないMac環境でのメモとかも書くかもしれません。<br />
新しいMBPはiPhoneでテザリングっぽいことが出来るかもとのことですが、全然気にしていません。</p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=472</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7とWindows Vista で SoundChannelがnullになる</title>
		<link>http://trinine.net/blog/?p=453</link>
		<comments>http://trinine.net/blog/?p=453#comments</comments>
		<pubDate>Thu, 17 Feb 2011 09:29:11 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=453</guid>
		<description><![CDATA[プラットフォーム依存しないことが大きな売りである筈のFlash君が Windows7とVistaでのみ動かない事態に遭遇し、 解決に多大な労力を費やしたのでメモ。 願わくば同じ境遇の人が検索で引っかかってくれますよう。 結論を述べると、Windows7とWindowsVistaのPCにサウンドの出力装置が接続されていないと、 SoundChannelがnullで返ってきます。 イヤホン指したら普通に動いたときは狐につままれた気分でした。。。 　 イヤホンで検索したら出てきた。 http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=9794&#38;forum=6]]></description>
			<content:encoded><![CDATA[<p><a href="http://trinine.net/blog/wp-content/uploads/2011/02/20110217.jpg" rel="shadowbox[post-453];player=img;"><img class="alignnone size-full wp-image-454" src="http://trinine.net/blog/wp-content/uploads/2011/02/20110217.jpg" alt="Windows7とWindowsVistaでSoundChannelがnullになる" width="550" height="115" /></a></p>
<p>プラットフォーム依存しないことが大きな売りである筈のFlash君が<br />
Windows7とVistaでのみ動かない事態に遭遇し、<br />
解決に多大な労力を費やしたのでメモ。<br />
願わくば同じ境遇の人が検索で引っかかってくれますよう。</p>
<p>結論を述べると、Windows7とWindowsVistaのPCにサウンドの出力装置が接続されていないと、<br />
SoundChannelがnullで返ってきます。</p>
<pre class="brush: as3; title: ; notranslate">
var sc:SoundChannel = sound.play(); //戻り値がnullらしい

sc.soundTransform = new SoundTransform(0.5);//エラー

if(sc  != null)sc.soundTransform = new SoundTransform(0.5);//解決
</pre>
<p>イヤホン指したら普通に動いたときは狐につままれた気分でした。。。<br />
<br />　<br />
イヤホンで検索したら出てきた。<br />
<a href="http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=9794&amp;forum=6">http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=9794&amp;forum=6</a></p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=453</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2880pxより下にあるダイナミックテキストが表示されないの対処法</title>
		<link>http://trinine.net/blog/?p=416</link>
		<comments>http://trinine.net/blog/?p=416#comments</comments>
		<pubDate>Wed, 01 Dec 2010 11:27:46 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[AS2]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[バグ]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=416</guid>
		<description><![CDATA[この大きさのFlashを作ることはあまりないかもしれませんが、対処方法のメモ書き。 外部XMLを読み込み表示するFlashのエンベッドwmodeを変更したところ、 下の方のテキストが表示されなくなりました。 調査したところ発生条件は、 FlashPlayer９以下 wmodeが&#8221;transparent&#8221; テキストフィールドへ動的に文字列を流し込んでいる そのテキストフィールドのY座標が2880px以上 でした。 対処法は以下のいずれか。 書き出し＆閲覧Playerバージョンを10以上にする フォントを埋め込む cacheAsBitmap = true （ビットマップとしてキャッシュにチェック） Flashの表示オブジェクトの限界が縦横2880pxらしいのでそれが関係していると思われる。 FlashPlayer10からはその制限が緩和されているため（参考）、 試してみたところテキストが表示されました。 該当のテキストフィールドにフォントを埋め込んでしまうのも効果あり。 表示されないだけで、文字列自体は入っているっぽかったので、 テキストを含むMovieClipのcacheAsBitmapをtrueにしたところ、これも効果あり。 今回はレギュレーションがPlayer8で固定、 日本語も入るのでフォントを埋め込むと容量が大きくなりすぎるということで、 3番の方法で対処しました。]]></description>
			<content:encoded><![CDATA[<p>この大きさのFlashを作ることはあまりないかもしれませんが、対処方法のメモ書き。<br />
外部XMLを読み込み表示するFlashのエンベッドwmodeを変更したところ、<br />
下の方のテキストが表示されなくなりました。<br />
調査したところ発生条件は、</p>
<ul>
<li><strong>FlashPlayer９以下</strong></li>
<li><strong>wmodeが&#8221;transparent&#8221;</strong></li>
<li><strong>テキストフィールドへ動的に文字列を流し込んでいる</strong></li>
<li><strong>そのテキストフィールドのY座標が2880px以上</strong></li>
</ul>
<p>でした。<br />
対処法は以下のいずれか。</p>
<ol>
<li><strong>書き出し＆閲覧Playerバージョンを10以上にする</strong></li>
<li><strong>フォントを埋め込む</strong></li>
<li><strong>cacheAsBitmap = true （ビットマップとしてキャッシュにチェック）</strong></li>
</ol>
<p>Flashの表示オブジェクトの限界が縦横2880pxらしいのでそれが関係していると思われる。<br />
FlashPlayer10からはその制限が緩和されているため（<a href="http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/display/BitmapData.html#BitmapData%28%29" target="_blank">参考</a>）、<br />
試してみたところテキストが表示されました。</p>
<p>該当のテキストフィールドにフォントを埋め込んでしまうのも効果あり。</p>
<p>表示されないだけで、文字列自体は入っているっぽかったので、<br />
テキストを含むMovieClipのcacheAsBitmapをtrueにしたところ、これも効果あり。<br />
今回はレギュレーションがPlayer8で固定、<br />
日本語も入るのでフォントを埋め込むと容量が大きくなりすぎるということで、<br />
3番の方法で対処しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=416</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Max 2010 Retweet 公開資料まとめ</title>
		<link>http://trinine.net/blog/?p=418</link>
		<comments>http://trinine.net/blog/?p=418#comments</comments>
		<pubDate>Tue, 30 Nov 2010 13:22:09 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[セミナーレポート]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=418</guid>
		<description><![CDATA[11月25日ベルサール汐留で行われたAdobe MAX 2010 RETWEET～ Adobe Flash Platform 最新情報 from MAXへ行って来ました。 10月に行われた本家MAXのおさらいイベントで、内容としてはAir for Androidなどスマートフォン成分が多めでした。 こういうのは行ってすぐまとめなきゃと思いつつ放置、そして内容を忘却・・・。 思い出そうとネットでレポートを探すと大半のスピーカーの方々が既に発表資料を公開されていたので、 下手にレポートせず、それらをここにまとめてお茶をにごしておきます。 【2010/12/17】 ・上条彰宏氏「Flash Player描画機能の最新情報」の資料URLを追記 ・公式にもレポートが追加されました 公式　 http://www.adobe.com/jp/joc/max/retweet/ Twitter     #maxjp 01-A「Deep Dive into Flex 4.5 (Hero) Preview」 taiga.jp 廣畑大雅氏 発表資料：http://blog.taiga.jp/archives/2010/11/25/171000/ 01-B「スマートフォンアプリ開発とFlexフレームワーク&#8221;Hero&#8221;入門」 ClockMaker 池田泰延氏 発表資料：http://clockmaker.jp/blog/2010/11/adobe-max-2010-retweet/ 02-A「進化するデザイン／開発ワークフロー：Flash Builder “Burrito” + Flash Catalyst “Panini”」 AKABANA 有川榮一氏 発表資料：http://akabana.info/2010/11/27/adobe-max-2010-retweet/ 02-B「Flash Player描画機能の最新情報」 cuaoar.jp 上条彰宏氏 発表資料：http://www.adobe.com/jp/joc/max/articles/retweet_flash2/ 03-A「Flex 4.5 （Hero）による [...]]]></description>
			<content:encoded><![CDATA[<p>11月25日ベルサール汐留で行われた<a href="http://www.adobe.com/jp/joc/max/retweet/">Adobe MAX 2010 RETWEET～ Adobe Flash Platform 最新情報 from MAX</a>へ行って来ました。<br />
10月に行われた本家MAXのおさらいイベントで、内容としてはAir for Androidなどスマートフォン成分が多めでした。<br />
こういうのは行ってすぐまとめなきゃと思いつつ放置、そして内容を忘却・・・。<br />
思い出そうとネットでレポートを探すと大半のスピーカーの方々が既に発表資料を公開されていたので、<br />
下手にレポートせず、それらをここにまとめてお茶をにごしておきます。</p>
<p>【2010/12/17】<br />
・上条彰宏氏「Flash Player描画機能の最新情報」の資料URLを追記<br />
・<a href="http://www.adobe.com/jp/joc/max/" target="_blank">公式</a>にもレポートが追加されました</p>
<p><span id="more-418"></span></p>
<p>公式　 <a href="http://www.adobe.com/jp/joc/max/retweet/">http://www.adobe.com/jp/joc/max/retweet/</a><br />
Twitter     <strong>#maxjp</strong></p>
<ul>
<li><strong>01-A「Deep Dive into Flex 4.5 (Hero) Preview」</strong><br />
<span style="font-weight: normal;"><a href="http://blog.taiga.jp/" target="_blank">taiga.jp<br />
</a></span><span style="font-weight: normal;">廣畑大雅氏<br />
</span><span style="font-weight: normal;">発表資料：<a href="http://blog.taiga.jp/archives/2010/11/25/171000/">http://blog.taiga.jp/archives/2010/11/25/171000/<br />
</a></span></li>
<li><strong>01-B「スマートフォンアプリ開発とFlexフレームワーク&#8221;Hero&#8221;入門」</strong><br />
<span style="font-weight: normal;"><a href="http://clockmaker.jp/" target="_blank">ClockMaker<br />
</a></span><span style="font-weight: normal;">池田泰延氏<br />
</span><span style="font-weight: normal;">発表資料：<a href="http://clockmaker.jp/blog/2010/11/adobe-max-2010-retweet/">http://clockmaker.jp/blog/2010/11/adobe-max-2010-retweet/<br />
</a></span></li>
<li><strong>02-A「進化するデザイン／開発ワークフロー：Flash Builder “Burrito” + Flash Catalyst “Panini”」</strong><br />
<span style="font-weight: normal;"><a href="http://akabana.info/" target="_blank">AKABANA<br />
</a></span><span style="font-weight: normal;">有川榮一氏<br />
</span><span style="font-weight: normal;">発表資料：<a href="http://akabana.info/2010/11/27/adobe-max-2010-retweet/">http://akabana.info/2010/11/27/adobe-max-2010-retweet/</a></span></li>
<li><strong>02-B「Flash Player描画機能の最新情報」</strong><br />
<span style="font-weight: normal;"><a href="http://cuaoar.jp/">cuaoar.jp<br />
</a></span><span style="font-weight: normal;">上条彰宏氏<br />
</span><span style="font-weight: normal;">発表資料：<a href="http://www.adobe.com/jp/joc/max/articles/retweet_flash2/">http://www.adobe.com/jp/joc/max/articles/retweet_flash2/</a></span><br />
<a href="http://blog.taiga.jp/archives/2010/11/25/171000/"></a></li>
<li><strong>03-A「Flex 4.5 （Hero）による モバイルアプリケーション開発とサーバ連携」</strong><br />
<span style="font-weight: normal;"><a href="http://classmethod.jp/" target="_blank">クラスメソッド株式会社<br />
</a></span><span style="font-weight: normal;">横田聡氏<br />
</span><span style="font-weight: normal;">発表資料：<a href="http://d.hatena.ne.jp/sato-shi/20101128/p1">http://d.hatena.ne.jp/sato-shi/20101128/p1</a></span></li>
<li><strong>03-B「アメーバピグ for Android の作り方」</strong><br />
<span style="font-weight: normal;"><a href="http://www.cyberagent.co.jp/" target="_blank">株式会社サイバーエージェント<br />
</a></span><span style="font-weight: normal;">浦野大輔氏／切通伸人氏<br />
</span><span style="font-weight: normal;">発表資料：</span></li>
</ul>
<p>上記発表意外に基調講演もあったのですが、そこで個人的に注目だったのはAdobeが提供するアプリ流通の仕組み、<strong>AdobeInMarket</strong>。<br />
専用のSDKをアプリに埋め込み登録することで、ポータル＆提携する複数のストアでアプリを販売できるとのこと。<br />
Androidの弱点としてAppStoreのような使い勝手の良い＆ここは賛否あるでしょうがフィルタリングの効いたマーケットがないことがよく言われているようなので期待したところ。<br />
登録一回で複数のマーケットで売れるのなら楽ですし。</p>
<p><span style="font-weight: normal;">Twitterを見ると、自分が参加したのとは別会場で今回の全セッションを<a href="http://tv.adobe.com/jp/">AdobeTV</a>で公開してくれるとアナウンスがあったらしい？<br />
会場別で半分は見れない形式だったのでこれは嬉しい、待ってます。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=418</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSFLメモ</title>
		<link>http://trinine.net/blog/?p=396</link>
		<comments>http://trinine.net/blog/?p=396#comments</comments>
		<pubDate>Tue, 28 Sep 2010 10:54:31 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[jsfl]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=396</guid>
		<description><![CDATA[久しぶりにJSFLを自作する機会があったのでそのメモ。 いちいち何ができて何ができないのか分かりません。 ■アイテム、インスタンスが『ボタン』かどうかを調べる ライブラリにあるアイテムはitemTypeで「movie clip」、「graphic」、「button」等取得できます。 ステージ上にあるシンボルの場合instanceTypeでは、ムービークリップ、ボタン、グラフィックが一緒くた「symbol」としか表示されません。 何とかならないか調べたところ、ボタンインスタンスであればbuttonTrackingが取得できるのでそれで対応。 　 ■キーフレームかどうかを調べる そのフレームがキーフレームかを調べるには、公式リファレンス(注:PDF) の例そのまんまですが、frame.startFrameプロパティが配列のインデックスと一致しているかどうかを確認。]]></description>
			<content:encoded><![CDATA[<p><a href="http://trinine.net/blog/wp-content/uploads/2010/09/20100928.jpg" rel="shadowbox[post-396];player=img;"><img class="alignnone size-full wp-image-398" title="20100928" src="http://trinine.net/blog/wp-content/uploads/2010/09/20100928.jpg" alt="JSFLメモ" width="550" height="110" /></a>久しぶりにJSFLを自作する機会があったのでそのメモ。<br />
いちいち何ができて何ができないのか分かりません。</p>
<p><strong>■アイテム、インスタンスが『ボタン』かどうかを調べる</strong><br />
ライブラリにあるアイテムは<strong>itemType</strong>で「movie clip」、「graphic」、「button」等取得できます。<br />
ステージ上にあるシンボルの場合<strong>instanceType</strong>では、ムービークリップ、ボタン、グラフィックが一緒くた「symbol」としか表示されません。<br />
何とかならないか調べたところ、ボタンインスタンスであれば<strong>buttonTracking</strong>が取得できるのでそれで対応。</p>
<pre class="brush: jscript; title: ; notranslate">
//ライブラリのアイテムがボタンか？
if(fl.getDocumentDOM().library.items[0].itemType == &quot;button&quot;)

//ステージのインスタンスがボタンか？
if(fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements[0].buttonTracking != undefined)
</pre>
<p>　<br />
<strong>■キーフレームかどうかを調べる</strong><br />
そのフレームがキーフレームかを調べるには、<a href="http://help.adobe.com/ja_JP/Flash/10.0_ExtendingFlash/flash_cs4_extending.pdf" target="_blank">公式リファレンス</a>(注:PDF) の例そのまんまですが、<strong>frame.startFrame</strong>プロパティが配列のインデックスと一致しているかどうかを確認。</p>
<pre class="brush: jscript; title: ; notranslate">
//キーフレームか否か？
var frameArray = fl.getDocumentDOM().getTimeline().layers[0].frames;
var n = frameArray.length;
for (i=0; i&lt;n; i++) {
	if (i==frameArray[i].startFrame) {
		alert(&quot;Keyframe at: &quot; + i);
	}
}

//現在のタイムライン全体からキーフレームに置かれている要素一つ一つを走査する
var tl = fl.getDocumentDOM().getTimeline();
var layerNum = tl.layers.length;
for (var l = 0; l &lt; layerNum; l++) {
	var frameNum = tl.layers[l].frames.length;
	for (var f = 0; f &lt; frameNum; f++) {
		//キーフレームか否か
		if (f == tl.layers[l].frames[f].startFrame) {
			var elementNum = tl.layers[l].frames[f].elements.length;
			var elts = tl.layers[l].frames[f].elements;
			for (var e = 0; e &lt; elementNum; e++) {
				var elt = elts[e];
				fl.trace(&quot;element of Keyframe : &quot; + elt);
			}
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=396</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WOW-Engine + PV3Dによる3次元物理演算</title>
		<link>http://trinine.net/blog/?p=353</link>
		<comments>http://trinine.net/blog/?p=353#comments</comments>
		<pubDate>Wed, 22 Sep 2010 05:21:49 +0000</pubDate>
		<dc:creator>TRININE</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[WOW-Engine]]></category>
		<category><![CDATA[物理演算]]></category>

		<guid isPermaLink="false">http://trinine.net/blog/?p=353</guid>
		<description><![CDATA[3Dの物理演算コンテンツのデモを作ることがあったので覚書。 物理演算のライブラリは数あれど、何も分からなかったのでとりあえず3D対応を謳っていたWOW-Engineを選択。 調べていく中で分かりましたが、物理演算系ライブラリは基本内部計算のみ、表示部分は自前か他のライブラリを使用する必要があるため、 例えばよく知られたBox2Dのような2次元物理演算のライブラリを利用して、3Dでの物理表現を実装することも可能です。 比較なんぞしていないですが、表現によってはそちらの方が動作が軽かったりしそうですね。 ここでは導入方法と実装の考え方をざっくりと。 3Dエンジン部分はPapervision3Dを使用しました。 【導入方法】 まず公式サイトからファイルを入手します。 そのままパブリッシュしようとすると、DListNode云々と怒られるので、ここからpolygonalクラスというのを入手して配置する必要があります。データ構造を扱いやすくするライブラリだそうです。 【実装】 まず各クラスの処理を簡略化したものがこちら。 WOW-EngineとPapervisionで全く同じ舞台を作ってやります。 Physics側では何も表示されませんが、物体が壁に当たると跳ね返ったりします。 View3D側では物体が表示されますが壁に当たっても素通りしてしまいます。 物理演算が適用された舞台をディスプレイに表示するため、毎フレームrenderとstep(WOW側のrender) を実行すると同時に、PV3Dのオブジェクトの座標をWOW-Engineの座標と同期させてやるわけです。 ポイントとしては主にWOW-Engine側、初期設定はこんな感じ。 WOWオブジェクトは空間に設置されてた壁(バウンドエリア)と、動くものを分ける必要があります。 View3D側で同じ状態をPV3Dで作るとこんな感じ。 View3D側、毎フレームWOW-Engineの座標をトレースする処理。 　 【SWF】WOW-Engine + PV3D デモ 上記のスクリプトを使ったデモです。 箱の中に球を生成させランダムな方向に降らせています。一定個数で古いものから消すようにしますが、当然Physicsとview3Dの両方でオブジェクトを消す必要があります。 view3Dは普通にremoveChildで。 注意するのはphysics(WOW-Engine)側、消すときはremoveParticleというメソッドを使うのですが、生成する際のaddParticleの引数にはWParticle型を指定するのに対して、removeParticleはDListNode型を指定する必要があります。これはaddParticleをした際返り値として取得ができます。 　 3次元と物理演算ということで身構える要素沢山ですが、このようなライブラリを使用すると驚くほど簡単にとりあえず動くレベルのものができました。 いろいろパラメーターがあるので気持ち良く動くまで試行錯誤です。]]></description>
			<content:encoded><![CDATA[<p>3Dの物理演算コンテンツのデモを作ることがあったので覚書。<br />
物理演算のライブラリは数あれど、何も分からなかったのでとりあえず3D対応を謳っていた<a href="http://not-so-stupid.com/open-source/as3-3d-physics-engine-wow-engine/" target="_blank">WOW-Engine</a>を選択。<br />
調べていく中で分かりましたが、物理演算系ライブラリは基本内部計算のみ、表示部分は自前か他のライブラリを使用する必要があるため、 例えばよく知られた<a href="http://www.box2d.org/" target="_blank">Box2D</a>のような2次元物理演算のライブラリを利用して、3Dでの物理表現を実装することも可能です。<br />
比較なんぞしていないですが、表現によってはそちらの方が動作が軽かったりしそうですね。<br />
ここでは導入方法と実装の考え方をざっくりと。<br />
3Dエンジン部分は<a href="http://www.papervision3d.org/" target="_blank">Papervision3D</a>を使用しました。</p>
<p>【導入方法】<br />
まず<a href="http://not-so-stupid.com/open-source/as3-3d-physics-engine-wow-engine/" target="_blank">公式サイト</a>からファイルを入手します。<br />
そのままパブリッシュしようとすると、DListNode云々と怒られるので、<a href="http://lab.polygonal.de/ds/" target="_self">ここ</a>からpolygonalクラスというのを入手して配置する必要があります。データ構造を扱いやすくするライブラリだそうです。</p>
<p>【実装】<br />
まず各クラスの処理を簡略化したものがこちら。<a href="http://trinine.net/blog/wp-content/uploads/2010/09/20100922_wow.gif" rel="shadowbox[post-353];player=img;"><img class="alignnone size-full wp-image-363" title="WOW-Engine + PV3D による3D物理演算コンテンツ概略図" src="http://trinine.net/blog/wp-content/uploads/2010/09/20100922_wow.gif" alt="WOW-Engine + PV3D による3D物理演算コンテンツ概略図" width="550" height="350" /></a></p>
<p><span id="more-353"></span>WOW-EngineとPapervisionで全く同じ舞台を作ってやります。<br />
Physics側では何も表示されませんが、物体が壁に当たると跳ね返ったりします。<br />
View3D側では物体が表示されますが壁に当たっても素通りしてしまいます。<br />
物理演算が適用された舞台をディスプレイに表示するため、毎フレームrenderとstep(WOW側のrender) を実行すると同時に、PV3Dのオブジェクトの座標をWOW-Engineの座標と同期させてやるわけです。</p>
<p>ポイントとしては主にWOW-Engine側、初期設定はこんな感じ。</p>
<pre class="brush: as3; title: ; notranslate">
//WOWインスタンス化。引数はフレームレートに対してどのくらいの間隔で計算を行うか。
wow = new WOWEngine(1);
//衝突判定設定？値が大きいと細かい衝突が無視される。　wow.STANDARD=100、SELECTIVE=200、SIMPLE=300。
wow.collisionResponseMode = wow.STANDARD;
//常に働く力（ここではY：重力を設定）
wow.addMasslessForce(new WVector(0, -4, 0));
//力の加速度（重力加速度を適用）
wow.damping = .98;
</pre>
<p>WOWオブジェクトは空間に設置されてた壁(バウンドエリア)と、動くものを分ける必要があります。</p>
<pre class="brush: as3; title: ; notranslate">
//バウンドエリアの設定(PV3Dで作る立方体と同じ大きさ・座標にする)
var ba:WBoundArea = new WBoundArea(900, 900, 900);
ba.setPosition(0, 0, 0);
//弾力
ba.elasticity = 2;
//摩擦
ba.friction = 1;
wow.setBoundArea(ba);

//この箱の中で動く球を作成(x座標、ｙ座標、ｚ座標、半径、固定物か否か、質量、弾力、摩擦)
var sphere:WSphere = new WSphere(0, 450, 0, 60, false, 0.5, 0.7, 0);
//初速度を設定(x,y,z方向への初期速度)
sphere.velocity = new WVector(Math.random()*100-50, Math.random()*100-50, Math.random()*100-50);
//空間に生成
wow.addParticle(sphere);
</pre>
<p>View3D側で同じ状態をPV3Dで作るとこんな感じ。</p>
<pre class="brush: as3; title: ; notranslate">
//WOWのバウンドエリアに対応する球
var ba:Cube = new Cube(materialList, 900, 900, 900, 4, 4, 4);
addChild(ba);

//箱の中で動く球
var ball:Sphere = new Sphere(material, 60, 8, 8);
addChild(ball);
</pre>
<p>View3D側、毎フレームWOW-Engineの座標をトレースする処理。</p>
<pre class="brush: as3; title: ; notranslate">
//動かすものの数が多いときはそれぞれ配列に格納して回しましょう。
//WOW-Engineの座標はpx,py,pzなのに注意。
for(var i:uint=0; i&lt;pvObjArray.length; i++) {
	pvObjArray[i].x = _physics.wowObjArray[i].px;
	pvObjArray[i].y = _physics.wowObjArray[i].py;
	pvObjArray[i].z = _physics.wowObjArray[i].pz;
}
render.renderScene(scene, camera, viewport);
</pre>
<p>　<br />
<a class="swfDemo" rel="shadowbox;width=600;height=600" href="http://trinine.net/blog/wp-content/uploads/2010/09/demo.swf"><strong>【SWF】WOW-Engine + PV3D デモ</strong></a><br />
上記のスクリプトを使ったデモです。<br />
箱の中に球を生成させランダムな方向に降らせています。一定個数で古いものから消すようにしますが、当然Physicsとview3Dの両方でオブジェクトを消す必要があります。<br />
view3Dは普通にremoveChildで。<br />
注意するのはphysics(WOW-Engine)側、消すときはremoveParticleというメソッドを使うのですが、生成する際のaddParticleの引数にはWParticle型を指定するのに対して、removeParticleはDListNode型を指定する必要があります。これはaddParticleをした際返り値として取得ができます。</p>
<pre class="brush: as3; title: ; notranslate">
//球オブジェクトを生み出す関数内
var sphere:WSphere = new WSphere(0, 450, 0, 60, false, 0.5, 0.7, 0);
sphere.velocity = new WVector(Math.random()*100-50, Math.random()*100-50, Math.random()*100-50);
//WOWエンジンにWSphereを追加した際の返り値を配列に保存
var p:DListNode = wow.addParticle(sphere);
DListNodeArray.push(p);
//古いオブジェクトから消す処理、DListNodeArrayに保存されたDListNodeをremoveParticleには使用する。
if (DListNodeArray.length &gt; 10) {
	wow.removeParticle(DListNodeArray[0]);
	DListNodeArray.shift();
}
</pre>
<p>　<br />
3次元と物理演算ということで身構える要素沢山ですが、このようなライブラリを使用すると驚くほど簡単にとりあえず動くレベルのものができました。<br />
いろいろパラメーターがあるので気持ち良く動くまで試行錯誤です。</p>
]]></content:encoded>
			<wfw:commentRss>http://trinine.net/blog/?feed=rss2&#038;p=353</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

