<?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>ClockMaker Blog &#187; AS3</title>
	<atom:link href="http://clockmaker.jp/blog/category/as3/feed/" rel="self" type="application/rss+xml" />
	<link>http://clockmaker.jp/blog</link>
	<description>Personal self study blog about Flash/Flex/AIR</description>
	<lastBuildDate>Thu, 29 Jul 2010 05:37:36 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>ActionScriptでのデータ保存形式の比較(XML・JSON・ByteArray)</title>
		<link>http://clockmaker.jp/blog/2010/07/actionscript-data/</link>
		<comments>http://clockmaker.jp/blog/2010/07/actionscript-data/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 19:30:18 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3280</guid>
		<description><![CDATA[ActionScriptでデータを外部に保存するときの方法について考察してみます。その前に質問ですが、次のデータオブジェクトをテキストファイルに保存する場合に、どのフォーマットがベストでしょうか。

var data:O [...]]]></description>
			<content:encoded><![CDATA[<p>ActionScriptでデータを外部に保存するときの方法について考察してみます。その前に質問ですが、次のデータオブジェクトをテキストファイルに保存する場合に、どのフォーマットがベストでしょうか。</p>
<pre class="brush: jscript;">
var data:Object = {
    family: [
        {name : &quot;自分&quot;, age : 10},
        {name : &quot;父&quot;,   age : 30}
    ],
    pet: [
        {name : &quot;ポチ&quot;,   age : 5},
        {name : &quot;ユズピ&quot;, age : 3}
    ],
};
</pre>
<p>ご察知の方が多いと思いますがJSONやXMLで保存するのが簡単そうです。しかし次の場合はどうでしょうか。</p>
<pre class="brush: jscript;">
var data:MyHouse = new MyHouse(
    [
        new Person(&quot;自分&quot;, 10),
        new Person(&quot;父&quot;,   30)
    ],
    [
        new Animal(&quot;ポチ&quot;,   5),
        new Animal(&quot;ユズピ&quot;, 3)
    ],
);
</pre>
<p>MyHouseとPerson、Animalというのはここではカスタムクラスとして用意したものとします。カスタムクラスが使われていた場合に、その<strong><span style="color: #ff0000;">型情報も保存するかどうかが悩ましい</span></strong>ところです。</p>
<p>つまり、このようなケースも含めて最適な保存方法はどの形式なのか、XML・JSON・ByteArrayの3つを比較して紹介します。</p>
<p><span id="more-3280"></span></p>
<h3>XML</h3>
<p>最も知名度が高く、テキストエディタでの編集が容易なことから<strong><span style="color: #ff0000;">最もFlashで扱われるデータ形式の一つ</span></strong>です。ActionScript3.0ではE4Xによる解析も可能なので利用しやすいのが特徴です。</p>
<p><span style="text-decoration: underline;">メリット</span></p>
<ul>
<li>柔軟なデータ保持が可能。</li>
<li>テキストデータなので再編集が容易（ヒューマンリーダブル）。</li>
<li>E4Xによる解析が容易。</li>
<li>汎用データ形式なので別環境での再利用が可能。</li>
</ul>
<p><span style="text-decoration: underline;">デメリット</span></p>
<ul>
<li>ASネイティブデータの保存にはXMLへの自前パーサーを用意する必要がある。</li>
<li>データ容量が大きくなる。</li>
<li>解析ロジックによっては計算時間がかかる。</li>
</ul>
<p>Flashでは<strong><span style="color: #ff0000;">ビルドインでネイティブ←→XMLの変換機能が提供されていない</span></strong>ため、その機能を自分で作る必要があります。そのため「自前パーサー」という言葉を使いました。</p>
<p>冒頭の質問のデータ形式については、自前パーサーの設計次第でカスタムクラスの変換・復元が可能です。Adobeが提供しているas3corelibのようなデファクトスタンダードなライブラリがない分、<strong><span style="color: #ff0000;">JSON形式と比べて採用しにくい</span></strong>のが難点かもしれません。</p>
<p>参考までに冒頭のデータをXMLに変換した場合の一例を示します。</p>
<pre class="brush: jscript;">
&lt;node type=&quot;myproject.data::MyHouse&quot;&gt;
  &lt;node type=&quot;Array&quot;&gt;
    &lt;node type=&quot;myproject.data::Person&quot;&gt;
      &lt;name type=&quot;String&quot;&gt;自分&lt;/name&gt;
      &lt;age type=&quot;Number&quot;&gt;10&lt;/age&gt;
    &lt;/node&gt;
    &lt;node type=&quot;myproject.data::Person&quot;&gt;
      &lt;name type=&quot;String&quot;&gt;父&lt;/name&gt;
      &lt;age type=&quot;Number&quot;&gt;30&lt;/age&gt;
    &lt;/node&gt;
  &lt;/node&gt;
  &lt;node type=&quot;Array&quot;&gt;
    &lt;node type=&quot;myproject.data::Animal&quot;&gt;
      &lt;name type=&quot;String&quot;&gt;ポチ&lt;/name&gt;
      &lt;age type=&quot;Number&quot;&gt;5&lt;/age&gt;
    &lt;/node&gt;
    &lt;node type=&quot;myproject.data::Animal&quot;&gt;
      &lt;name type=&quot;String&quot;&gt;ユズピ&lt;/name&gt;
      &lt;age type=&quot;Number&quot;&gt;3&lt;/age&gt;
    &lt;/node&gt;
  &lt;/node&gt;
&lt;/node&gt;
</pre>
<h3>JSON</h3>
<p>XMLよりもネイティブに近い形で保存できるため、<strong><span style="color: #ff0000;">データの変換・復元の扱いが容易な形式</span></strong>です。ActionScript 3.0では、<a href="http://code.google.com/p/as3corelib/" target="_blank">Adobeが提供しているas3corelib</a>のJSONクラスを使用することで、JSON形式への変換・再現が可能です。以下は、as3corelibのJSONクラスについての機能を評価したものとなります。</p>
<p><span style="text-decoration: underline;">メリット</span></p>
<ul>
<li>as3corelibなどデファクトスタンダードなライブラリが存在する。</li>
<li>テキストデータなので再編集が容易。</li>
<li>ECMA標準のObject/Array形式で保存するため汎用性がある。</li>
<li>JavaScriptなど別言語での再利用も可能。</li>
</ul>
<p><span style="text-decoration: underline;">デメリット</span></p>
<ul>
<li>型指定が保存できない。</li>
<li>データ容量が大きくなる（ただしXMLよりコンパクト）。</li>
<li>デコード/エンコードの計算時間がかかる。</li>
</ul>
<p>冒頭の質問のデータ形式については、カスタムクラスであってもpublicな変数や、読み取り可能なアクセサであればJSONデータとして変換可能です。ただし、JSONデータは型情報が保存されないため、ネイティブ(Object, Array, Number, Boolean, String)の型しか利用できず、<strong><span style="color: #ff0000;">型情報まで含めた復元はできません</span></strong>。</p>
<p>参考までに冒頭のデータをJSONに変換した場合の一例を示します。ご覧の通り型指定はありませんが、<strong><span style="color: #ff0000;">ネイティブのデータ形式と比べて非常に近い形</span></strong>で変換されているのがわかります。</p>
<pre class="brush: jscript;">
[
  [
    {&quot;age&quot;:10,&quot;name&quot;:&quot;自分&quot;},
    {&quot;age&quot;:30,&quot;name&quot;:&quot;父&quot;}
  ],
  [
    {&quot;age&quot;:5,&quot;name&quot;:&quot;ポチ&quot;},
    {&quot;age&quot;:3,&quot;name&quot;:&quot;ユズピ&quot;}
  ]
]
</pre>
<p>ちなみに、JSONの使い方やXMLとの比較については、当ブログで紹介して紹介していますので、そちらも参考ください。</p>
<ul>
<li><a title="ActionScriptでJSONを扱う方法 | ClockMaker Blog" href="../2009/11/actionscript-json/">ActionScriptでJSONを扱う方法</a></li>
</ul>
<h3>ByteArray</h3>
<p>保存形式としてはあまり認知されていないと思いますが、ByteArrayにはwriteObject/readObjectというメソッドがあります。これはActionScriptのネイティブなデータ情報をバイナリとして扱うことができるため、<strong><span style="color: #ff0000;">データの再現性に優れた形式</span></strong>です。テキスト情報ではなくバイナリのため、データの<strong><span style="color: #ff0000;">変換・復元の計算も非常に高速</span></strong>なため、用途が限定されるのであれば<strong><span style="color: #ff0000;">もっともパフォーマンスが高い</span></strong>形式かもしれません。</p>
<p><span style="text-decoration: underline;">メ</span><span style="text-decoration: underline;">リット</span></p>
<ul>
<li>ネイティブのデータで保持するため、完全な復元が可能。</li>
<li>クラスの型指定も保持可能。</li>
<li>バイナリなのでデータ容量がコンパクト。</li>
<li>データのデコード/エンコードの計算時間が早い。</li>
</ul>
<p><span style="text-decoration: underline;">デメリット</span></p>
<ul>
<li>ActionScript 3.0以外での再利用が困難。</li>
<li>テキストエディタなどでの再編集が困難。</li>
<li>ByteArrayに対する知識が必要。</li>
</ul>
<p>サーバーサイドへ保存する場合などバイナリでは扱いが複雑になるため、場合によってはBase64変換を使ってバイナリを文字列に変換してみるのもいいかもしれません（<a href="http://ja.wikipedia.org/wiki/Base64" target="_blank">Base64は元のバイナリデータに対して138%のデータ容量になります</a>）。wonderflにて検証したところでは、ByteArray＋Base64変換と、JSON変換だと<strong><span style="color: #ff0000;">前者のほうが圧倒的に早い結果</span></strong>を得ました。データ容量についても前者のほうが<strong><span style="color: #ff0000;">圧倒的にコンパクトで有利</span></strong>です。</p>
<p><span style="text-decoration: underline;">検証結果</span></p>
<ul>
<li><a title="[ Performance - Write ] ByteArray.writeObject vs JSON.encode | wonderfl build flash online" href="http://wonderfl.net/c/5InF" target="_blank">[ Performance - Write ] ByteArray.writeObject vs JSON.encode</a></li>
<li><a title="[ Performance - Read ] ByteArray.readObject vs JSON.decode | wonderfl build flash online" href="http://wonderfl.net/c/nZX3" target="_blank">[ Performance - Read ] ByteArray.readObject vs JSON.decode</a></li>
</ul>
<p>参考までに冒頭のデータをByteArray + Base64に変換した場合の一例を示します。とてもヒューマンリーダブルなデータとは言えませんが、その分文字数も少なくデータ容量がコンパクトなことがわかります。</p>
<pre class="brush: jscript;">
CQUBCjMrbXlwcm9qZWN0LmRhdGEuUGVyc29uCXByZWYHYWdlCW5hbWUKIydteXByb2plY3QuZGF0
YS5QcmVmBWlkBgQNBgtUT0tZTwQbBglZQVNVCgEKBQQbBgtPU0FLQQQdBglOT0JV
</pre>
<h3>まとめ</h3>
<p>一概にどれがベストであるかは評価が難しいところですが、評価のポイントとして次を検討してみるといいかもしれません。</p>
<ul>
<li>変換・復元の計算速度</li>
<li>変換後のデータ容量</li>
<li>型指定まで含めた復元が必要かどうか</li>
<li>別アプリで保存データを編集するかどうか(汎用性)</li>
<li>保存形式が利用可能かどうか（文字列かバイナリか）</li>
<li>保守・永続性</li>
</ul>
<p>それでは次回は、私が開発したJSONクラスに取って代わるXMLで型指定データも保持可能なライブラリについて紹介したいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/07/actionscript-data/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>セミナーイベントのお知らせ「ActionScript 3.0で学ぶ三次元表現」</title>
		<link>http://clockmaker.jp/blog/2010/07/as3-3d/</link>
		<comments>http://clockmaker.jp/blog/2010/07/as3-3d/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 12:45:22 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3174</guid>
		<description><![CDATA[セミナーイベントのお知らせです。この夏、ActionScript 3.0で3Dを学ぶためのイベントが東京で２つ開催されます。

こちらは野中さんと私が出演する無料のイベントです。ActionScript 3.0での3Dの [...]]]></description>
			<content:encoded><![CDATA[<p>セミナーイベントのお知らせです。この夏、ActionScript 3.0で3Dを学ぶためのイベントが東京で２つ開催されます。</p>
<p><a href="http://event.67.org/summercamp/20100802/" title="[無料] ActionScript 3.0による 三次元表現 in アップルストア 銀座"><img class="alignnone size-full wp-image-3175" title="[無料] ActionScript 3.0による 三次元表現 in アップルストア 銀座" src="http://clockmaker.jp/blog/wp-content/uploads/2010/07/bnr_20100802.gif" alt="" width="234" height="60" /></a></p>
<p>こちらは<a href="http://www.fumiononaka.com/" target="_blank">野中さん</a>と<a href="http://clockmaker.jp/labs/">私</a>が出演する無料のイベントです。ActionScript 3.0での3Dの実装について基礎的な考え方や実践に役立つテクニックを披露します。8/2(月)と平日ですが、夜から開始なので仕事が終わってから（もしくは夕食がてら抜けだしてきて）参加できるかと思います。<strong><span style="color: #ff0000;">無料なので</span></strong>お気軽に起こしくださいませ！</p>
<ul>
<li><a href="http://event.67.org/summercamp/20100802/" target="_blank">詳細</a><a href="http://event.67.org/summercamp/20100802/" target="_blank">・</a><a href="http://event.67.org/summercamp/20100802/" target="_blank">お申し込みはこちらから</a></li>
</ul>
<p><a href="http://event.67.org/summercamp/20100806/" title="Summer Camp 2010 野中文雄のActionScript 3.0による 三次元表現"><img class="alignnone size-full wp-image-3176" title="Summer Camp 2010 野中文雄のActionScript 3.0による 三次元表現" src="http://clockmaker.jp/blog/wp-content/uploads/2010/07/bnr_20100806.gif" alt="" width="234" height="60" /></a></p>
<p>野中さんの新刊著書「 <a href="http://book.mycom.co.jp/book/978-4-8399-3277-0/978-4-8399-3277-0.shtml">ActionScript 3.0による三次元表現ガイドブック</a>」をテキストにして、みっちり一日かけて学習するワークショップです。書籍では3Dの基礎知識と数学（行列やベクトル）について解説されています。数学に苦手意識を持っている人も多いでしょうが、ActionScript 3.0で3Dや動き・ビットマップの制御を作っていくとこれらを使う機会も多いです。特に数学的知識についてFlash系の書籍でこれだけ充実した内容で触れているものは少ないので、これを機会に<span style="color: #ff0000;"><strong>講師の野中さんから直接学び</strong></span>、苦手意識を克服して表現の引き出しを増やしてみてはいかがでしょうか。</p>
<ul>
<li><a href="http://event.67.org/summercamp/20100806/" target="_blank">詳細・お申し込みはこちらから</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/07/as3-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash CS5の数値入力みたいなコンポーネントを作ってみた</title>
		<link>http://clockmaker.jp/blog/2010/07/flash-professional-ui/</link>
		<comments>http://clockmaker.jp/blog/2010/07/flash-professional-ui/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 05:28:08 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3166</guid>
		<description><![CDATA[
Flash CS4から搭載された数値入力のインターフェースが直感的で使いやすくて便利なので、Flashでコンポーネントを作ってみました。このインターフェースは従来のコンポーネントと比較して、次のような点で優れています。 [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><a href="http://wonderfl.net/c/aSwW/fullscreen" target="_blank" title="Flash Professional CS5みたいな数値入力"><img class="alignnone size-full wp-image-3167" title="Flash Professional CS5みたいな数値入力" src="http://clockmaker.jp/blog/wp-content/uploads/2010/07/100701_ui.png" alt="" width="460" height="200" /></a></p>
<p>Flash CS4から搭載された数値入力のインターフェースが直感的で使いやすくて便利なので、Flashでコンポーネントを作ってみました。このインターフェースは従来のコンポーネントと比較して、次のような点で優れています。</p>
<ul>
<li>キーボードを使わずに値を変更できる</li>
<li>直接入力にも対応しているので、任意の値へ調整できる</li>
<li>場所を取らない</li>
</ul>
<p>動作サンプルはこちらから。</p>
<ul>
<li><a href="http://wonderfl.net/c/aSwW/fullscreen" target="_blank">UI like Flash CS5 | wonderfl</a></li>
</ul>
<p>作ってみて、思った以上にいい感じで動作するので、先日作った<a href="http://clockmaker.jp/blog/2010/06/easing-generator/">AIRアプリ「Easing Generator」</a>に組み込んでみようかと思います。使い方やソースコードは以下から。</p>
<p><span id="more-3166"></span></p>
<h3>使い方</h3>
<p>使い方はいたって簡単でこんな感じです。</p>
<pre class="brush: jscript;">
var label = new DraggableTextInput();
label.minimum = -100; // 最小値
label.maximum = 100; // 最大値
label.value = 0; // 値
label.snapInterval = 1; // 変更時のステップサイズ
label.addEventListener(Event.CHANGE, _onChange);
addChild(label);

// 値が変更されたとき
function _onChange(event:Event):void {
    trace(label.value);
}
</pre>
<p>MITライセンス（個人・商用利用は無償）でwonderflに投稿しているので、ご自由にお使い下さいませ。</p>
<ul>
<li><a href="http://wonderfl.net/c/aSwW" target="_blank">http://wonderfl.net/c/aSwW</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/07/flash-professional-ui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>カスタムイージングを作成できるAIRアプリ「Easing Generator」</title>
		<link>http://clockmaker.jp/blog/2010/06/easing-generator/</link>
		<comments>http://clockmaker.jp/blog/2010/06/easing-generator/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 03:10:03 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Adobe AIR]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3126</guid>
		<description><![CDATA[
FlashのActionScriptトゥイーンエンジンに利用できるカスタムイージング（加減速）編集アプリを作りました。ActionScriptでトゥイーンを作成するとテンプレートと言える「イージング関数」は数種類しかな [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><a href="http://code.google.com/p/clockmaker-tools/downloads/list?can=3" target="_blank" title="Easing Generator"><img class="alignnone size-full wp-image-3125" title="Easing Generator" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100628_1.jpg" alt="" width="460" height="200" /></a></p>
<p>FlashのActionScriptトゥイーンエンジンに利用できる<strong><span style="color: #ff0000;">カスタムイージング（加減速）編集アプリ</span></strong>を作りました。ActionScriptでトゥイーンを作成するとテンプレートと言える「イージング関数」は数種類しかないので<span style="color: #000000;">似たような動きになりがち</span>です。それを解決すべく作った、動かし方を自由に編集できるツールということです。ActionScript 3.0で<strong><span style="color: #ff0000;">主要なトゥイーンエンジン各種に対応</span></strong>しています。</p>
<p>インストール方法と主な使い方は以下から。</p>
<p><span id="more-3126"></span></p>
<h3>このアプリが役立つ場面</h3>
<p class="photo"><a href="/blog/wp-content/uploads/2010/06/100628_2.jpg" rel="shadowbox[post-3126];player=img;" title="Easing Generator"><img title="Easing Generator" src="/blog/wp-content/uploads/2010/06/100628_2-460x292.jpg" alt="" width="460" height="292" /></a></p>
<p>［上：Flash Professionalのような感覚で加減速を調整できる］</p>
<p>このアプリは主に次のような場面で役に立つと思います。</p>
<ul>
<li>標準搭載のイージングに自分の求めている動きがなかった</li>
<li>始点と終点で別々のイージングを適用したい</li>
<li>他の人と同じイージングを使うのが嫌だ</li>
</ul>
<p>簡単な動きであれば標準のイージングでことが足りるのですが、Flashを作りこめば標準のイージングで物足りないということもあるかと思います。</p>
<h3>ダウンロード</h3>
<p>次のリンクから「Easing Generator」の最新版のAIRアプリのファイルをダウンロードできます。AIRアプリなので、Windows/Mac/Linuxの<span style="color: #ff0000;"><strong>いずれのOSでも利用可能</strong></span>です。</p>
<ul>
<li><a href="http://code.google.com/p/clockmaker-tools/downloads/list?can=3">Download &#8211; clockmaker tools</a></li>
</ul>
<p>※ツールはAdobe AIRアプリのため、最新版の<a href="http://www.adobe.com/jp/products/air/" target="_blank">Adobe AIR 2 のランタイム</a>が必要です。</p>
<h3>使い方ビデオ</h3>
<p>ビデオにもまとめていますので、素早く使い勝手を把握したい方はこちらを参考にしてくださいませ。ビデオは1分15秒です。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="420" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/WVeQFW_XQuY&amp;hl=ja_JP&amp;fs=1&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="420" src="http://www.youtube.com/v/WVeQFW_XQuY&amp;hl=ja_JP&amp;fs=1&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h3>使い方</h3>
<ol>
<li>アプリを起動</li>
<li>グラフのラインにポイントを打つ</li>
<li>ドラッグ＆ドロップで曲線を編集</li>
<li>プリセットから選ぶと便利</li>
<li>対応しているトゥイーンエンジンを選択</li>
<li>［Copy］ボタンをクリックしてクリップボードにコピー</li>
<li>フレームアクションやクラスに、コードをペーストする（※トゥイーンエンジンのパスを予め通しておく必要がある）</li>
</ol>
<p class="photo"><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100628_3.jpg" rel="shadowbox[post-3126];player=img;" title="Easing Generator"><img class="alignnone size-medium wp-image-3129" title="Easing Generator" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100628_3-460x322.jpg" alt="" width="460" height="322" /></a></p>
<p>［上：各種トゥイーンエンジンに対応したソースコードを自動生成します］</p>
<p>グラフの編集はFlash Professionalに搭載されているカスタムイージングに近い使い方です。</p>
<h3>対応しているトゥイーンエンジン</h3>
<p>対応しているトゥイーンエンジンは次の4種類です。要望が多数あれば他のトゥイーンエンジンにも対応しますが、Google CodeにソースコードをMITライセンスで公開していますので、カスタマイズしてもらっても構いません。</p>
<ul>
<li>Tweener</li>
<li>BetweenAS3</li>
<li>KTween</li>
<li>TweenMax</li>
</ul>
<h3>注意点</h3>
<p>常用には差し支え無いと思いますが、すこしばかり注意点があります。メモがてら今後のタスクとして。</p>
<ul>
<li>パスの曲線が交差することがある(人間側の努力で防げると信じています)</li>
<li>カスタムイージングは通常のイージング関数よりも複雑な計算をするため、若干処理が重たいかも。(数百・数千のトゥイーンを同時に再生させない限りは問題ないと思います)</li>
<li>fl.motion.BezierSegmentクラス(Flash CS3〜CS5同梱)が動作に必要</li>
</ul>
<ul></ul>
<p>イージングにこだわりを持つことから、コンテンツのブラッシュアップへとつながれば幸いです。</p>
<h3>関連記事</h3>
<ul>
<li><a title="[BetweenAS3] カスタムイージング | ClockMaker Blog" href="../2010/05/betweenas3-custom-easing/">[BetweenAS3] カスタムイージング</a></li>
<li><a title="BetweenAS3を使ってカスタムイージングの始まりと終わりに別のイージング関数を指定する方法 | ClockMaker Blog" href="../2009/11/betweenas3-custom/">BetweenAS3を使ってカスタムイージングの始まりと終わりに別のイージング関数を指定する方法</a></li>
<li><a title="Saqoosha.net :: FuseKit の Custom Easing Tool を Tweener で使う" href="http://saqoosha.net/2008/03/13/649/" target="_blank">Saqoosha.net :: FuseKit の Custom Easing Tool を Tweener で使う</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/06/easing-generator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ASDoc入りのSWCファイル「Fat SWC」の作り方</title>
		<link>http://clockmaker.jp/blog/2010/06/fat-swc/</link>
		<comments>http://clockmaker.jp/blog/2010/06/fat-swc/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 14:08:03 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3108</guid>
		<description><![CDATA[
FlashではSWC（スウィク）ファイルを利用することで、ActionScriptのパブリッシュ/ビルドが早くなることを先日のSpark 勉強会で発表しました（「Spark project 勉強会 SP3」の発表ビデオ [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><img class="alignnone size-full wp-image-3109" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_fatswc.png" alt="" width="460" height="200" /></p>
<p>FlashではSWC（スウィク）ファイルを利用することで、ActionScriptのパブリッシュ/ビルドが早くなることを先日のSpark 勉強会で発表しました（<a title="「Spark project 勉強会 SP3」の発表ビデオ | ClockMaker Blog" href="../2010/06/spark-project-sp3/">「Spark project 勉強会 SP3」の発表ビデオ</a>）。主にAS3ライブラリ開発者向けの情報になるのですが、そのSWCファイルにASDocコメントを含める方法を紹介します。</p>
<p><span id="more-3108"></span></p>
<h3>ASDoc入りのSWCファイル「Fat SWC」とは</h3>
<p>通常のSWCファイルにはASDocコメントが含まれません。つまりコードヒントのコメントを利用できないというデメリットがありました。AS3登場後、様々なAS3ライブラリがSWCファイルで提供されていますが、そのほとんどがコメントなしのSWCです。</p>
<p><span style="color: #ff0000;"><strong>Fat SWC</strong></span>とは、SWCファイルにASDocコメントを含めた形式です。そのため対応したソフト（FlashDevelop 3.2.1やFlash Builder 4）では、ソースコード利用時と同様にコードヒントに<strong><span style="color: #ff0000;">ASDocコメントを表示</span></strong>することができます。通常のSWCではASDocコメントは表示されません。ASDocコメントが表示されることは重要で、<strong><span style="color: #ff0000;">ヘルプを参照する手間を極力省く</span></strong>ことができます。</p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_01.png" rel="shadowbox[post-3108];player=img;" title="Fat SWCに対応しているFlashDevelop"><img class="alignnone size-medium wp-image-3110" title="Fat SWCに対応しているFlashDevelop" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_01-460x257.png" alt="" width="460" height="257" /></a></p>
<p>［上：Fat SWCに対応しているFlashDevelop 3.2.1］</p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_02.png" rel="shadowbox[post-3108];player=img;" title="Fat SWCに対応しているFlash Builder 4"><img class="alignnone size-medium wp-image-3111" title="Fat SWCに対応しているFlash Builder 4" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_02-460x169.png" alt="" width="460" height="169" /></a></p>
<p>［上：Fat SWCに対応しているFlash Builder 4］</p>
<p>※FDTというエディターはFat SWCに対応しておらず、Fat SWCのASDocコメントは表示されないらしいです。</p>
<h3>Fat SWCの構造</h3>
<p>Flex SDKでFat SWCを作る場合は本来は次の手順を踏みます。</p>
<ol>
<li>SWCファイルを生成する</li>
<li>ASDocをXMLで生成する</li>
<li>SWCファイルをZIPとして(.swcを.zipにリネームしてから)解凍する</li>
<li>SWC内にASDocのXMLをコピーする</li>
<li>SWCファイルをZIPとして圧縮し、拡張子を.swcに戻す</li>
<li>完成</li>
</ol>
<p>完成したファイルは次のように「docs」フォルダがあり、XMLファイルが格納されています。XMLにはASDocのコメント情報が記述されています。</p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_03.png" rel="shadowbox[post-3108];player=img;" title="100623_03"><img class="alignnone size-medium wp-image-3112" title="100623_03" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_03-460x222.png" alt="" width="460" height="222" /></a></p>
<p>［左：Fat SWC、右：通常のSWC］</p>
<p>ただ、この手順を踏むのは非常に不便です。試したところ、Flash Builder 4でAntタスクを利用して半自動的に行うのがベストでしたので、その方法を紹介します。Antタスクとは、コンパイルや諸々の作業を専用のXMLファイルに記述して自動実行するツールです。</p>
<h3>Flash Builder 4でFat SWCの作り方</h3>
<p>（1）Flash Builderで「ライブラリプロジェクトを作成」します。</p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_04.png" rel="shadowbox[post-3108];player=img;" title="ライブラリプロジェクト"><img class="alignnone size-medium wp-image-3113" title="ライブラリプロジェクト" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_04-460x155.png" alt="" width="460" height="155" /></a></p>
<p>（2）「src」フォルダにSWC化したいAS3ライブラリのソースファイルを格納。ここでは例として、<a href="http://www.libspark.org/" target="_blank">Spark Project</a>からダウンロードできる「<a title="BetweenAS3/en - Spark project" href="http://www.libspark.org/wiki/BetweenAS3/en" target="_blank">BetweenAS3</a>」を利用しています。</p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100624_05.png" rel="shadowbox[post-3108];player=img;" title="パッケージエクスプローラ"><img class="alignnone size-full wp-image-3114" title="パッケージエクスプローラ" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100624_05.png" alt="" width="372" height="290" /></a></p>
<p>（3）Antビルド用の、build.xmlをプロジェクト内にコピーします。build.xmlは<a href="http://clockmaker.jp/labs/100623_fatswc/build.xml">こちら</a>からダウンロードください。(Macの設定ファイルのみ記述しています。Windowsの場合はWindowsのFlex SDKのパスを修正ください)</p>
<p>AntはFlash Builder 4にプリインストールされているかは忘れてしまったのですが、もし入っていない場合は記事「<a title="FlashBuilder 4 に Ant を導入する - まさにっき（コードで世界を変えたい人の記録）" href="http://d.hatena.ne.jp/seiunsky/20100510/1273504163" target="_blank">FlashBuilder 4 に Ant を導入する &#8211; まさにっき（コードで世界を変えたい人の記録）</a>」を参考にプラグインをインストールします。</p>
<p>（4）［パッケージエクスプローラ］の「build.xml」を右クリックし［実行］→［Ant Build］を選択してAnt ビルドを実行します。</p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_06.png" rel="shadowbox[post-3108];player=img;" title="Antビルド"><img class="alignnone size-medium wp-image-3115" title="Antビルド" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_06-460x166.png" alt="" width="460" height="166" /></a></p>
<p>（5）［コンソール］パネルにログが表示され（一部文字化けのログもでる）数十秒待つと、「BUILD SUCCESSFUL」と表示されます。</p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_07.png" rel="shadowbox[post-3108];player=img;" title="Flash Builder のコンソール"><img class="alignnone size-medium wp-image-3116" title="Flash Builder のコンソール" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/100623_07-460x222.png" alt="" width="460" height="222" /></a></p>
<p>(6)プロジェクトの「bin」フォルダを確認します。そこにはSWCファイル「mylib_fatswc.swc」が生成されていますが、これがASDoc入りのFat SWCです。ファイル名は自由に変更して利用できます。</p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/06/スクリーンショット（2010-06-23-22.27.31）.png" rel="shadowbox[post-3108];player=img;" title="Fat SWCの生成完了"><img class="alignnone size-medium wp-image-3117" title="Fat SWCの生成完了" src="http://clockmaker.jp/blog/wp-content/uploads/2010/06/スクリーンショット（2010-06-23-22.27.31）-460x224.png" alt="" width="460" height="224" /></a></p>
<p>以上となります。不明な点やWindowsのFlash Builder 4同梱のFlex SDK 4の場所などお知らせ頂ける場合は、コメントいただけると幸いです。</p>
<p>それではFat SWCで、効率のよいコーディングを！</p>
<h3>参考記事</h3>
<ul>
<li><a title="Creating SWC files with asdoc comments.. « Gaurav's Blog" href="http://gauravj.com/blog/2010/01/creating-swc-files-with-asdoc-comments/" target="_blank">Creating SWC files with asdoc comments.. « Gaurav&#8217;s Blog</a></li>
<li><a title="Build SWCs with ASDoc for Flash Builder 4 - Flash Builder Tips" href="http://blogs.adobe.com/jasonsj/2010/04/build_swcs_with_asdoc_for_flash_builder_4.html" target="_blank">Build SWCs with ASDoc for Flash Builder 4 &#8211; Flash Builder Tips</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/06/fat-swc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[BetweenAS3] カスタムイージング</title>
		<link>http://clockmaker.jp/blog/2010/05/betweenas3-custom-easing/</link>
		<comments>http://clockmaker.jp/blog/2010/05/betweenas3-custom-easing/#comments</comments>
		<pubDate>Thu, 20 May 2010 12:09:55 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3050</guid>
		<description><![CDATA[
Flashではスクリプトでトゥイーンを作るとインタラクションに関わるいろいろ制御が楽だったりするのですが、トゥイーンライブラリにビルドインされているイージングの種類も限られているので、求めている動きに近づけるときに限界 [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><a href="http://wonderfl.net/c/6Av0" target="_blank" title="BetweenAS3でカスタムイージング"><img class="alignnone size-full wp-image-3051" title="BetweenAS3でカスタムイージング" src="http://clockmaker.jp/blog/wp-content/uploads/2010/05/100520_betweenas3.png" alt="" width="460" height="200" /></a></p>
<p>Flashではスクリプトでトゥイーンを作るとインタラクションに関わるいろいろ制御が楽だったりするのですが、トゥイーンライブラリにビルドインされているイージングの種類も限られているので、求めている動きに近づけるときに限界を感じることがたまにあります。</p>
<p>ということで、BetweenAS3のイージング関数の引数に、Flash Professionalのようなカスタムイージングを適用するデモを作ってみました。ベジェでイージングの曲線をカスタマイズすると、わりと求めている動きに近づけられるかもしれません。</p>
<ul>
<li><a title="BetweenAS3 Custom Easing Generator | wonderfl build flash online" href="http://wonderfl.net/c/6Av0" target="_blank">BetweenAS3 Custom Easing Generator</a></li>
</ul>
<p><span id="more-3050"></span></p>
<p><a href="http://clockmaker.jp/blog/wp-content/uploads/2010/05/100521_Flash_custom_easein_easeout.png" rel="shadowbox[post-3050];player=img;" title="Flash Professional カスタムイーズイン、イーズアウト"><img class="alignnone size-medium wp-image-3059" title="Flash Professional カスタムイーズイン、イーズアウト" src="http://clockmaker.jp/blog/wp-content/uploads/2010/05/100521_Flash_custom_easein_easeout-460x280.png" alt="" width="460" height="280" /></a><br />
Flash Professional カスタムイーズイン、イーズアウト</p>
<h3>メモ1.</h3>
<p>BetweenAS3にカスタムイージングを適用する方法は、Custom.func()を使って次のようなスクリプトを記述します。</p>
<pre class="brush: jscript;">
var ease:IEasing = Custom.func(
    /**
    * @param t 時間
    * @param b 開始値 (0.0が代入される)
    * @param c 増加の傾き (1.0が代入される)
    * @param d デュレーション
    *
    * @return 0.0〜1.0周辺の結果を返せばOK
    */
    function(t:Number, b:Number, c:Number, d:Number):Number {
        return c * (t/d) + b; // ここをカスタマイズ
    }
});

BetweenAS3.to(target_mc, {x:100}, 10, ease).play();
</pre>
<h3>メモ2.</h3>
<p>出力機能とか付けていないので見るだけのデモですが、いつか時間ができたらAIRアプリとかにしてコピペできるようにしてみたいところです。別の方法になりますが、始まりと終わりに別々のイージング関数を指定する方法も以前ブログに記事を投稿しました。</p>
<ul>
<li><a title="BetweenAS3を使ってカスタムイージングの始まりと終わりに別のイージング関数を指定する方法 | ClockMaker  Blog" href="../2009/11/betweenas3-custom/">BetweenAS3 を使ってカスタムイージングの始まりと終わりに別のイージング関数を指定する方法</a></li>
</ul>
<h3>メモ3.</h3>
<p>Progression4にはTweenListというリストコマンドが搭載されています。トゥイーンだけでなく、関数をイージング付けて実行したいときなどにはTweenListは重宝します。どういう使い方ができるかというと、次のデモがわかりやすいかと思います。</p>
<ul>
<li><a title="[Math] Integral Simulation | wonderfl build flash online" href="http://wonderfl.net/c/bvqp" target="_blank">[Math] Integral Simulation<br />
</a></li>
</ul>
<h3>メモ4.</h3>
<p>ベジェ曲線はこちらの記事が参考になりました。Flash Professional同梱のBezierSegmentクラスにはgetYforX()という便利なメソッドが用意されていて、それを使うとカスタムイージングが作りやすいです。</p>
<ul>
<li><a title="ベジエ曲線の仕組み (4) - ActionScript 3.0 でベジエ曲線を描く - てっく煮ブログ" href="http://d.hatena.ne.jp/nitoyon/20070921/bezier_4" target="_blank">ベ ジエ曲線の仕組み (4) &#8211; ActionScript 3.0 でベジエ曲線を描く &#8211; てっく煮ブログ</a></li>
<li><a title="fl.motion.BezierSegmentで三次ベジェ曲線を描く | 2BLOG" href="http://blog.nipx.jp/2008/04/flmotionbeziersegment/" target="_blank">fl.motion.BezierSegmentで三次ベジェ曲線を描く | 2BLOG</a></li>
</ul>
<p>この記事は<a href="http://clockmaker.jp/blog/2010/06/easing-generator/">「カスタムイージングを作成できるAIRアプリEasing Generator」</a>へ続きます。</p>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/05/betweenas3-custom-easing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActionScript 3.0でAS2のような_global変数を使う方法</title>
		<link>http://clockmaker.jp/blog/2010/05/as3-global/</link>
		<comments>http://clockmaker.jp/blog/2010/05/as3-global/#comments</comments>
		<pubDate>Tue, 18 May 2010 04:15:07 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3039</guid>
		<description><![CDATA[
ちょっとした子ネタの紹介。ActionScript 1.0/2.0の頃にFlashのどこからでも参照できる「_root」や「_global」という変数がありました。それをActionScript 3.0でも使う方法です [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><img class="alignnone size-full wp-image-3040" title="グローバル変数" src="http://clockmaker.jp/blog/wp-content/uploads/2010/05/100518_global.png" alt="" width="460" height="200" /></p>
<p>ちょっとした子ネタの紹介。ActionScript 1.0/2.0の頃にFlashの<span style="color: #ff0000;"><strong>どこからでも参照できる</strong></span>「_root」や「_global」という変数がありました。それをActionScript 3.0でも使う方法です。</p>
<p><span id="more-3039"></span></p>
<h3>手順1.ファイルを用意</h3>
<p><img class="alignnone size-full wp-image-3041" title="_global_as" src="http://clockmaker.jp/blog/wp-content/uploads/2010/05/100518_global_as.png" alt="" width="534" height="181" /></p>
<p>flaからパスの通った階層（とりあえずflaファイルと同じ階層でOK）に「_global.as」というASファイルを作成します。</p>
<h3>手順2. スクリプトを記述</h3>
<p>ASファイル「_global.as」に次の三行を記述します。</p>
<pre class="brush: jscript;">
package {
    public const _global:Object = {};
}
</pre>
<p>はい、以上です。</p>
<h3>試しにスクリプトを記述</h3>
<p>フレームアクションでもクラスでもどちらでもいいので、次のスクリプトを記述してみましょう。</p>
<pre class="brush: jscript;">
_global.my_num = 1000;
_global.my_str = &quot;moja&quot;;

trace(_global.my_num);
trace(_global.my_str);
</pre>
<p>出力パネルに結果が表示されるはずです。</p>
<p><img class="alignnone size-full wp-image-3042" title="出力パネル" src="http://clockmaker.jp/blog/wp-content/uploads/2010/05/スクリーンショット（2010-05-18-13.06.30）.png" alt="" width="315" height="204" /></p>
<h3>一応、説明</h3>
<p>ActionScriptファイルはクラスファイルのみを記述できると思われがちですが、<strong><span style="color: #ff0000;">packageの括弧内（かつclassの括弧の外側）に記述</span></strong>することでこのように任意の変数やメソッドを定義することもできます。変数_globalはObject型として型指定したため、何でも挿入できます。</p>
<p>packageパスは特に記述しないことで<strong><span style="color: #ff0000;">デフォルトの名前空間</span></strong>になるため、どこからでもimport文を通さずに参照できるというわけです。</p>
<p>少しバッドノウハウの紹介でしたが、応急処置的にグローバル変数を利用したいときや、AS2からの移行を考えている方には役立つかもしれませんね。</p>
<h3>ソースのダウンロード</h3>
<p>ソースファイルは<a href="http://clockmaker.jp/labs/100518_global/src.zip">こちら</a>からダウンロードできます。（Flash CS4形式）</p>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/05/as3-global/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>リリース前に抑えておきたいFlash Player 1O.1の新仕様</title>
		<link>http://clockmaker.jp/blog/2010/04/flashplayer1o-1/</link>
		<comments>http://clockmaker.jp/blog/2010/04/flashplayer1o-1/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 12:13:05 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=2863</guid>
		<description><![CDATA[Adobe Creative Suite 5の発表が4/12にされるそうですが、今年は新しい技術が登場しそうでワクワクしている方も多いのではないでしょうか。そこで、Flash Player 1O.1の新機能について、pu [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cs5launch.adobe.com/">Adobe Creative Suite 5の発表が4/12</a>にされるそうですが、今年は新しい技術が登場しそうでワクワクしている方も多いのではないでしょうか。そこで、Flash Player 1O.1の新機能について、public betaを触って気づいた点をいくつか紹介したいと思います。</p>
<p>※もっとも重要なことを最後に書いていますので、読まれる場合は記事の最後まで必ずご覧ください。<br />
<span id="more-2863"></span></p>
<h3>MovieClipの先頭フレームが1から0になる</h3>
<p>従来はMovieClipの先頭フレームは「1」でした。しかし配列をはじめプログラムで扱うには「1」よりも「0」のほうが望ましかったため「0」を採用されることのことです。</p>
<pre class="brush: jscript;">
this.gotoAndStop(0); // 先頭フレームへ

this.gotoAndStop(this.totalFrames - 1); // 最終フレームへ
</pre>
<p>噂では次期Flash CSSのタイムラインも先頭フレームは0となっているようです。</p>
<p><img class="alignnone size-full wp-image-2864" title="100401-mc" src="http://clockmaker.jp/blog/wp-content/uploads/2010/04/100401-mc.png" alt="" width="464" height="205" /></p>
<h3>型指定ができるDictionaryクラスとして用意された新クラス</h3>
<p>FlashPlayer10から配列で型指定したい場合はVector型というクラスが用意されました。ハッシュとして利用する場合はDictionaryクラスがありましたが、その強化版としてGlossaryクラスが用意されました。Vectorと同様に型指定できるようになっています。</p>
<pre class="brush: jscript;">
var g:Glossary.＜String＞ = new Glossary.＜String＞(true, true, 10);
g[&quot;hoge&quot;] = &quot;hogehoge&quot;;
g[&quot;piyo&quot;] = &quot;piyopiyo&quot;;
g[&quot;moja&quot;] = 16; // ←数字を挿入するとコンパイルエラーになる
</pre>
<p>※参考までにDictionaryは「辞書」という意味ですが、Glossaryは「宝典」という意味です。</p>
<h3>GPU対応が進む、PixelBenderや行列計算にも対応</h3>
<p>1O.1のGPU対応としてH.264ビデオの再生支援が既に紹介されていますが、実はPixelBenderや行列計算(特にネイティブのMatrix3Dによる計算)、そしてdrawTriangle()にも適用されることがわかりました。これにより3Dの各種計算やテクスチャマッピングへの効果的な最適化が行えるようになります。WinだけでなくMacでもLinuxでも有効になるみたいです。</p>
<p><a href="http://forum.papervision3d.jp/">フォーラム</a>で聞いた話によれば、Papervision3Dの次期バージョン PapervisionXでも対応を進めているとか。使用方法はHTMLのエンベッド時にパラメーターをwmode=&#8221;gpu&#8221;にすることで有効になります。</p>
<h3>スクリプトでwmodeの変更が可能に</h3>
<p>root.loaderInfoにwmodeプロパティーが追加されました。これによりランタイム時に動的にwmodeをtransparentに変更することが可能になります。スクリプトでは以下のように記述します。</p>
<pre class="brush: jscript;">
import flash.display.StageWMode;
root.loaderInfo.wmode  = StageWMode.TRANSPARENT;
</pre>
<h3>ActionScript 3.1の搭載</h3>
<p>Flash Player 1O.1とバージョンが上がるのと一緒に、ActionScript 3もマイナーバージョンアップし、ActionScript 3.1が搭載されます。ActionScript 3.1は頓挫したECMA Script 4の採用を諦め、ECMAのHarmony(ハーモニー)に準拠する方向へシフトしたようです。</p>
<p>例えば、import文の挙動が変わります。従来はSpriteクラスやTextFieldクラスを利用する場合は</p>
<pre class="brush: jscript;">
import flash.text.*;
import flash.display.*;
</pre>
<p>とたくさんのimport文を書く必要がありました。しかし、ActionScript 3.1では以下のように記述すれば、一括でインポートすることができます。</p>
<pre class="brush: jscript;">
import flash.*;
</pre>
<p>外部ライブラリを使う場合には、import文をより完結に書けるので開発効率があがりそうですね。もちろんコンフリクト(重複)する場合は完全なパッケージ名を記述することで回避可能です。</p>
<p>またActionScript 3.1ではオーバーロードも対応しています。既に<a href="http://www.be-interactive.org/">beinteractive</a>先生がwonderflにサンプルのソースコードを投稿されているのでぜひチェックしておきましょう。JAVA言語をやっていたことのある方には馴染みのある記法ですね。</p>
<ul>
<li><a href="http://wonderfl.net/code/e1f284e51af7a978d7c8b88dec71cbb72f498981">http://wonderfl.net/code/e1f284e51af7a978d7c8b88dec71cbb72f498981</a></li>
</ul>
<h3>グローバルサウンドコントローラー</h3>
<p>ActionScript 3.0では動的に作成したSoundインスタンスの音量を一括で管理することができませんでした。しかしグローバルサウンドコントローラー(GlobalSoundControllerクラス)が搭載され、全体の音量を一括で処理しやすくなりました。</p>
<pre class="brush: jscript;">
import flash.media.*;
root.loaderInfo.uncaughtSound.addEventListener(
    UncaughtSoundEvent.SAMPLE_DATA_EVENT,
    function( e:UncaughtSoundEvent ):void{
         var c:GlobalSoundController = e.target as GlobalSound;
        c.volume = &quot;50%&quot;; //全体の音量を50%にする
    } );
}
</pre>
<p>グローバルエラーハンドラーという機能が10.1には搭載されますが、1O.1のグローバルサウンドコントローラーは互いにスペル間違いしないように気をつけないといけませんね。</p>
<h3>まとめ</h3>
<p>オープンスクリーンプロジェクトの成果としてスマートフォンに搭載されることで期待されるFlash Player 1O.1。ActionScript 3.1の搭載は現場レベルでは少し混乱が起きそうですが、GPU対応などパフォーマンス的にはかなり向上するので、SWFObjectのバージョン判定等でいっきに1O.1を指定してみてもいいかもしれませんね。</p>
<p>ということで、<strong>4/1</strong>のエントリーとしてまとめてみました。もちろん４月馬鹿な内容ですが(念のため)、こういう機能があればいいのになぁという個人的希望でまとめてみました。最後までご覧頂きありがとうございました。</p>
<h3>エイプリルフールネタの記事</h3>
<ul>
<li><a title="BeInteractive! [Abode Flash CS4 RC1]" href="http://www.be-interactive.org/index.php?itemid=354" target="_blank">BeInteractive! [Abode Flash CS4 RC1]</a></li>
<li><a title="今日気になったページ - PHP,MySQL,Flexな日々＋イラストとか" href="http://d.hatena.ne.jp/haru-komugi/20090401/1238530111" target="_blank">今日気になったページ &#8211; PHP,MySQL,Flexな日々＋イラストとか</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/04/flashplayer1o-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AS3でよく使われる変数名の意味をまとめたよ</title>
		<link>http://clockmaker.jp/blog/2010/01/as3-vars/</link>
		<comments>http://clockmaker.jp/blog/2010/01/as3-vars/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 13:07:56 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=2712</guid>
		<description><![CDATA[こちらの記事がおもしろいと思ったので、ActionScript 3.0でよく使われる変数名の意味をまとめてみました。このあたりの変数名で命名していれば他の人にソースを見られても恥ずかしくないのと、初心者の方であれば変数名 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://today-only.net/abbreviation/" target="_blank">こちら</a>の記事がおもしろいと思ったので、ActionScript 3.0でよく使われる変数名の意味をまとめてみました。このあたりの変数名で命名していれば<strong>他の人にソースを見られても恥ずかしくない</strong>のと、初心者の方であれば<strong>変数名が何を意味しているのか確認に役立つ</strong>と思います。</p>
<p><span id="more-2712"></span></p>
<p>現時点では70個ぐらいピックアップしました。</p>
<p><iframe width='520' height='700' frameborder='0' src='http://spreadsheets.google.com/pub?key=tyDvJOOqtz2470Pg2GaDPqQ&#038;single=true&#038;gid=0&#038;output=html&#038;widget=true'></iframe></p>
<p>つっこみがあれば<a href="http://twitter.com/clockmaker_core" target="_blank">@clockmaker_core</a>までリプライ頂ければと思います。</p>
<p>ちなみに<a href="http://twitter.com/matsumos" target="_blank">@matsumosさん</a>が<a href="http://twitter.com/matsumos/status/7514643060" target="_blank">変数名まとめサイト的なものも開発される</a>らしいです。そちらも楽しみ！</p>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/01/as3-vars/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stardustを使ってAS3のパーティクル表現を学ぶ Vol.02</title>
		<link>http://clockmaker.jp/blog/2010/01/stardust-02/</link>
		<comments>http://clockmaker.jp/blog/2010/01/stardust-02/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 12:24:22 +0000</pubDate>
		<dc:creator>Yasu</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=2703</guid>
		<description><![CDATA[
AS3 のパーティクルエンジンである Stardust (スターダスト)についてチュートリアル記事、第2弾目。
前回の記事では、Stardust は「イニシャライザー」と「アクション」がカスタマイズの鍵ということに触れ [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><a rel="shadowbox;width=720;height=480" href="http://clockmaker.jp/labs/100105_stardust_02/main.swf" title="AS3のパーティクルエンジン「Stardust」のシミュレーション"><img class="alignnone size-full wp-image-2704" title="AS3のパーティクルエンジン「Stardust」のシミュレーション" src="http://clockmaker.jp/blog/wp-content/uploads/2010/01/100105-stardust.jpg" alt="" width="460" height="200" /></a></p>
<p>AS3 のパーティクルエンジンである <a href="http://code.google.com/p/stardust-particle-engine/" target="_blank">Stardust (スターダスト)</a>についてチュートリアル記事、第2弾目。<a href="http://clockmaker.jp/blog/2010/01/stardust-01/"></a></p>
<p><a href="http://clockmaker.jp/blog/2010/01/stardust-01/">前回の記事</a>では、Stardust は「イニシャライザー」と「アクション」がカスタマイズの鍵ということに触れました。今回の記事ではそれらの役割について説明します。まずは、視覚的にわかりやすいデモを作りましたので、こちらをご覧ください。<small>(右側のパネルで各種パラメーターを調整し、左側で表示されているパーティクルの演出をカスタマイズすることができます)</small></p>
<ul>
<li><a rel="shadowbox;width=720;height=480" href="http://clockmaker.jp/labs/100105_stardust_02/main.swf">Stardust パラメーターシミュレーション</a></li>
<li><a href="http://clockmaker.jp/labs/100105_stardust_02/src.zip">ソースファイル(ZIP, Flex 4プロジェクト)</a></li>
</ul>
<p>以下、詳細を説明します。</p>
<p><span id="more-2703"></span></p>
<h3>イニシャライザーとは</h3>
<p>イニシャライザーとは、<strong>パーティクルの初期値を設定するクラス</strong>となります。EmitterクラスのaddInitialize()メソッドを使って、エミッターにイニシャライザーを追加していきます。</p>
<p>デモでは、以下のパラメーターをイニシャライザーとしてカスタマイズできるようにしています。</p>
<ul>
<li>パーティクルの開始スケール値 (Scale クラス)</li>
<li>パーティクルの元となるスプライトの種類 (DisplayObjectClass クラス)</li>
<li>パーティクルの生存値 (Life クラス)</li>
</ul>
<p class="photo"><img class="alignnone size-full wp-image-2707" title="イニシャライザーでカスタマイズ" src="http://clockmaker.jp/blog/wp-content/uploads/2010/01/100105-stardust-initializer.jpg" alt="" width="460" height="200" /></p>
<p>[図1] イニシャライザーで、パーティクル発生時の透明度やスケール値にランダム性を持たせた例</p>
<h3>イニシャライザーの種類紹介</h3>
<p>他にも様々なイニシャライザーがありますが、一部の代表的な2Dのイニシャライザーを紹介しておきます。</p>
<ul>
<li>Life : パーティクルの生存値(アクションでAgeとDaethLifeを有効にする必要あり)</li>
<li>Position : パーティクルの発生位置を調整</li>
<li>Scale : パーティクルの開始スケール値を調整</li>
<li>Alpha : パーティクルの開始透明度を調整</li>
<li>DisplayObjectClass : パーティクルの元となるスプライトの種類</li>
<li>Rotation : パーティクルの開始角度を調整</li>
</ul>
<h3>アクションとは</h3>
<p>アクションとは、パーティクル発生後に<strong>どのような動きをするかを設定するクラス</strong>となります。EmitterクラスのaddAction()メソッドを使って、エミッターにアクションを追加していきます。</p>
<p>デモでは、以下のパラメーターをアクションとしてカスタマイズできるようにしています。</p>
<ul>
<li>加速値(Accelerate クラス)</li>
<li>スケール変化 (ScaleCurve クラス)</li>
<li>重力の速度 (Gravity クラス)</li>
</ul>
<p class="photo"><img class="alignnone size-full wp-image-2709" title="アクションをカスタマイズ" src="http://clockmaker.jp/blog/wp-content/uploads/2010/01/100105-stardust-action.jpg" alt="" width="460" height="200" /></p>
<p>[図2] アクションを加えて、パーティクルに重力やスケール変化を適用させた例</p>
<h3>アクションの種類紹介</h3>
<p>他にも様々なアクションがありますが、一部の代表的な2Dのアクションを紹介しておきます。</p>
<ul>
<li>Age : 寿命を有効化</li>
<li>DeathLife : 死滅を有効化</li>
<li>AlphaCurve : 透明度変化を有効化</li>
<li>ScaleCurve : スケール変化を有効化</li>
<li>Move : 移動を有効化</li>
<li>Accelerate : 加速を有効化</li>
<li>Damping : 減速を有効化</li>
<li>Gravity : 重力の速度を有効化</li>
<li>DeathZone : パーティクルが死滅する領域を指定</li>
<li>AbsoluteDrift : 動きのランダム方向を指定(雨粒のように左右にぶれるような動き)</li>
<li>Oriented : Velocityに関係する回転運動を指定</li>
</ul>
<h3>まとめ</h3>
<p>Stardustを扱う上で、どのようなイニシャライザーやアクションがあるかを把握することが、表現の自由度を高める効果的な学習ステップになると思います。<a href="http://code.google.com/p/stardust-particle-engine/#Examples" target="_blank">公式サンプル</a>のソースコードは全てダウンロード可能ですので、どのようなクラスを用いて動かすかはサンプルコードを参考にすればわかりやすいと思います。</p>
<p>なお、本記事で紹介しているイニシャライザーとアクションはStardustのほんの一部ですので、興味のある方は公式ドキュメントなどを参考にしらべてみるといいかもしれません。</p>
<p>次回は任意のタイミングでパーティクルをON/OFFする方法について説明します。</p>
<p>続く…</p>
<h3>関連記事</h3>
<ul>
<li><a title="パーティクル表現のためのAS3ライブラリ「Stardust」 | ClockMaker Blog" href="../2010/01/2009/12/as3-stardust/" target="_blank">パーティクル表現のためのAS3ライブラリ「Stardust」</a></li>
<li><a title="Stardustを使ってAS3のパーティクル表現を学ぶ Vol.01 | ClockMaker Blog" href="../2010/01/stardust-01/">Stardustを使ってAS3のパーティクル表現を学ぶ Vol.01</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/01/stardust-02/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
