<?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, 02 Feb 2012 14:44:05 +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 3.0で日本語対応のPDFが作成できる「purePDF」のサンプル</title>
		<link>http://clockmaker.jp/blog/2010/12/purepdf/</link>
		<comments>http://clockmaker.jp/blog/2010/12/purepdf/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 06:00:45 +0000</pubDate>
		<dc:creator>池田 泰延</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3655</guid>
		<description><![CDATA[
ActionScript 3.0 からクライアントサイドだけで PDF を作成できる AS3 ライブラリに AlivePDF と purePDF があります。最近は「purePDF」が日本語に対応しているとかで評判が良 [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><a href="http://clockmaker.jp/labs/101203_purepdf/JapaneseSample.swf"><img class="alignnone size-full wp-image-3656" src="http://clockmaker.jp/blog/wp-content/uploads/2010/12/101203_purepdf.gif" alt="" width="460" height="200" /></a></p>
<p>ActionScript 3.0 から<strong>クライアントサイドだけ</strong>で PDF を作成できる AS3 ライブラリに <a href="http://alivepdf.bytearray.org/" target="_blank">AlivePDF</a> と <a href="http://code.google.com/p/purepdf/" target="_blank">purePDF</a> があります。最近は「<a href="http://code.google.com/p/purepdf/" target="_blank">purePDF</a>」が日本語に対応しているとかで評判が良かったりするのですが、試してみようにも公式で提供されているサンプルが少しばかり難しめです。そこでシンプルなサンプルを用意してみました。</p>
<ul>
<li><a href="http://clockmaker.jp/labs/101203_purepdf/JapaneseSample.swf" target="_blank">デモ</a>（要Flash Player 10.1）</li>
<li><a href="http://clockmaker.jp/labs/101203_purepdf/101203_PurePDF.zip" target="_blank">ソースコード</a>（ZIP ※）</li>
</ul>
<p>ソースコードは <a href="http://www.adobe.com/jp/products/flashbuilder/" target="_blank">Adobe Flash Builder 4</a> のプロジェクトで用意していますが、Flash Professional や <a href="http://flashdevelop.jp/" target="_blank">FlashDevelop</a> でも利用することができます。以下、具体的な使い方を解説します。</p>
<p>※ライブラリとフォントは公式サイトから別途ダウンロードください</p>
<p><span id="more-3655"></span></p>
<h3>使い方</h3>
<p>まずはライブラリのパスを通します。</p>
<ol>
<li><a href="http://code.google.com/p/purepdf/" target="_blank">公式サイト</a>からライブラリの SWC ファイルをダウンロード。</li>
<li>Flash Builder (またはその他のソフト) で SWC にライブラリパスを通します。</li>
</ol>
<p>ActionScript は上でダウンロードした<a href="../../labs/101203_purepdf/101203_PurePDF.zip" target="_blank">ソースコード</a>の「JapaneseSample.as」を例に解説します。</p>
<p>まずは CMAP の読み込みと登録をします。CMAP のことは「<a title="PDF　千夜一夜: PDFと文字 (25) – CMapで文字コードからCIDへ変換" href="http://blog.antenna.co.jp/PDFTool/archives/2006/01/pdf_25_cmapcid.html" target="_blank">CMapで文字コードからCIDへ変換</a>」の解説記事がわかりやすいと思います。ポイントとしては、CMap クラスや BaseFont クラスからJIS系の定数を選択することです。</p>
<pre class="brush: jscript;">
var map: ICMap = new CMap( new CMap.UniJIS_UCS2_H() );
CMapResourceFactory.getInstance().registerCMap( BaseFont.UniJIS_UCS2_H, map );
</pre>
<p>次にプロパティの読み込みと登録をします。使いたいフォントを BuiltinCJKFonts クラスから定数を使って指定します。次のコードでは日本語フォント「平成角ゴシック」がビルトインで搭載されているので、それを利用しています。</p>
<pre class="brush: jscript;">
var prop: IProperties = new Properties();
prop.load( new BuiltinCJKFonts.HeiseiKakuGo_W5() );

CJKFontResourceFactory.getInstance().registerProperty(
    BuiltinCJKFonts.getFontName( BuiltinCJKFonts.HeiseiKakuGo_W5 ),
    prop);
</pre>
<p>次にフォント指定のためのインスタンスを作成します。Font クラスのコンストラクタの引数で文字のサイズやカラーを指定します。</p>
<pre class="brush: jscript;">
var bf: BaseFont = BaseFont.createFont(
BuiltinCJKFonts.getFontName( BuiltinCJKFonts.HeiseiKakuGo_W5 ),
BaseFont.UniJIS_UCS2_H, BaseFont.NOT_EMBEDDED, true );

var font: Font = new Font( -1. -1, 32, -1, null, bf );
</pre>
<p>次は purePDF を利用するための初期化をします。PageSize クラスの定数を利用してPDFドキュメント（紙）のサイズを指定します。</p>
<pre class="brush: jscript;">
var byteArray:ByteArray = new ByteArray();
var rectangle:ReadOnlyRectangle = PageSize.A4;
var writer:PdfWriter = PdfWriter.create(byteArray, rectangle);
var document:PdfDocument = writer.pdfDocument;
</pre>
<p>次は、PDF の内容を作成します。PdfDocument インスタンスを open() して内容を書き込み、close() して閉じます。close() した段階で byteArray に PDF のバイナリデータが作られます。</p>
<pre class="brush: jscript;">

document.open();
&lt;pre&gt;document.add(new Paragraph(&quot;こんにちは。こんにちは purepdf。\n日本語もできます。&quot;, font));
document.close();
</pre>
<p>最後は保存処理を行います。PDF の内容は byteArray インスタンスに格納されているので、ここは用途に応じて自由に作成しましょう。私の用意したサンプルでは、FileReferece クラスを利用してローカルに保存するようにしています。</p>
<pre class="brush: jscript;">
var fr:FileReference = new FileReference();
fr.save(byteArray, &quot;mydocument.pdf&quot;);
</pre>
<p>以上となります。</p>
<h3>日本語化に関する参考記事</h3>
<p>日本語化の方法については次の記事がとても参考になります。あわせてご確認ください。</p>
<ul>
<li><a title="purepdfを使って日本語フォントを指定したpdfを作る - nod::ぶろぐ:RIA::Flex/AIR/Flash" href="http://www.noridon.net/weblogs/archives/2010/05/purepdfpdf.html" target="_blank">purepdfを使って日本語フォントを指定したpdfを作る &#8211; nod::ぶろぐ:RIA::Flex/AIR/Flash</a></li>
<li><a title="jp.ferv.blog » Blog Archive » Player10.0 でも purePDF で日本語PDFを作る" href="http://ferv.jp/blog/2010/05/10/player10-0_purepdf_japanese/" target="_blank">jp.ferv.blog » Blog Archive » Player10.0 でも purePDF で日本語PDFを作る</a></li>
</ul>
<p>P.S. <a title="FlashサイトをキャプチャしてPDFに変換する Progression 拡張機能「CaptureSheetMaker」 | ClockMaker" href="../../project/prog_csm/" target="_blank">FlashサイトをキャプチャしてPDFに変換する Progression 拡張機能「CaptureSheetMaker」</a> は AlivePDF を使っているのですが、purePDF に切り替えようかライブラリのライセンスの関係で迷いどころ。</p>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/12/purepdf/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>FlashDevelopでASDocを作る方法＋SVNでASDocを公開する方法の解説ビデオ</title>
		<link>http://clockmaker.jp/blog/2010/08/flashdevelop-asdoc/</link>
		<comments>http://clockmaker.jp/blog/2010/08/flashdevelop-asdoc/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 13:47:05 +0000</pubDate>
		<dc:creator>池田 泰延</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3334</guid>
		<description><![CDATA[かなりニッチな話題ですが、ActionScript 3.0 のライブラリ開発者向けに役立つ情報を。フリーの開発ソフト FlashDevelop を利用して ASDoc（=ライブラリの API ドキュメント）を作る方法の解 [...]]]></description>
			<content:encoded><![CDATA[<p>かなりニッチな話題ですが、ActionScript 3.0 のライブラリ開発者向けに役立つ情報を。フリーの開発ソフト<a href="http://flashdevelop.jp/" target="_blank"> FlashDevelop </a>を利用して ASDoc（=ライブラリの API ドキュメント）を作る方法の解説ビデオを作ってみました。SVN（サブバージョン）上でASDocを公開する方法もあわせてビデオで解説しています。</p>
<p>高解像度の HD ビデオをアップロードして、ビデオのアノテーションを入れたので、とりあえずビデオを見れば全部わかるはず。<a href="http://www.libspark.org/" target="_blank">Spark project</a> や Google Code で ActionScript 3.0 ライブラリを公開する場合に参考にしてくださいませ。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="344" 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/h0DyZS2GaRI?fs=1&amp;hl=ja_JP&amp;border=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="550" height="344" src="http://www.youtube.com/v/h0DyZS2GaRI?fs=1&amp;hl=ja_JP&amp;border=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>ライブラリ開発者はこちらもあわせてチェックしておくといいかもです。</p>
<ul>
<li><a title="ASDoc入りのSWCファイル「Fat SWC」の作り方 | ClockMaker Blog" href="http://clockmaker.jp/blog/2010/06/fat-swc/">ASDoc入りのSWCファイル「Fat SWC」の作り方</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/08/flashdevelop-asdoc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AS3オブジェクトをシリアライズできるライブラリXMLSerializerを公開</title>
		<link>http://clockmaker.jp/blog/2010/08/xmlserializer/</link>
		<comments>http://clockmaker.jp/blog/2010/08/xmlserializer/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 02:21:56 +0000</pubDate>
		<dc:creator>池田 泰延</dc:creator>
				<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://clockmaker.jp/blog/?p=3293</guid>
		<description><![CDATA[
サーバーサイドへのデータの通信やローカル保存などを想定した場合の、データの扱いについて前回のブログ記事で紹介しました（ActionScriptでのデータ保存形式の比較(XML・JSON・ByteArray) ）。XML [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><a href="http://www.libspark.org/wiki/clockmaker/XMLSerializer" title="XML"><img src="http://clockmaker.jp/blog/wp-content/uploads/2010/08/100802_xmlserializer.png" alt="" title="XML" width="460" height="200" class="alignnone size-full wp-image-3299" /></a></p>
<p>サーバーサイドへのデータの通信やローカル保存などを想定した場合の、データの扱いについて前回のブログ記事で紹介しました（<a title="ActionScriptでのデータ保存形式の比較(XML・JSON・ByteArray) | ClockMaker Blog" href="http://clockmaker.jp/blog/2010/07/actionscript-data/">ActionScriptでのデータ保存形式の比較(XML・JSON・ByteArray) </a>）。XMLは汎用的に使われる頻度が多いですが、自前パーサーを作るのが難点という課題がありました。</p>
<p>そこでオブジェクトを<strong>半自動的にXMLにシリアライズ</strong>できる<strong>XMLSerializer（XMLシリアライザー）</strong>というActionScript 3.0のライブラリを作ってみました。Spark projectにコミットしたので、利用したい方はそちらを参考くださいませ。</p>
<ul>
<li><a title="clockmaker/XMLSerializer - Spark project" href="http://www.libspark.org/wiki/clockmaker/XMLSerializer" target="_blank">clockmaker/XMLSerializer &#8211; Spark project</a></li>
</ul>
<p>これを使うとFlashのデータで、配列や無名オブジェクト、カスタムクラス、Vector型などを<strong>完全に型情報をもったまま</strong>変換できます。ActionScript 3.0になってE4Xという方法でXMLの扱いが楽になりましたが、型情報をもたせるための自前パースがもっと楽になります。XMLを扱うFlashサイトでさらに便利になるはずです。</p>
<p><span id="more-3293"></span></p>
<h3>任意のオブジェクト</h3>
<pre class="brush: jscript;">
{hoge:&quot;りんご&quot;} →
&lt;property name=&quot;hoge&quot; type=&quot;String&quot;&gt;&lt;![CDATA[りんご]]&gt;&lt;/property&gt;

{piyo:12} →
 &lt;property name=&quot;piyo&quot; type=&quot;Number&quot;&gt;12&lt;/property&gt;

{flag:true} →
 &lt;property name=&quot;flag&quot; type=&quot;Boolean&quot;&gt;true&lt;/property&gt;
</pre>
<h3>配列</h3>
<p>[22,33,44]</p>
<pre class="brush: jscript;">
&lt;property name=&quot;history&quot; type=&quot;Array&quot;&gt;
  &lt;property index=&quot;0&quot; type=&quot;Number&quot;&gt;22&lt;/property&gt;
  &lt;property index=&quot;1&quot; type=&quot;Number&quot;&gt;33&lt;/property&gt;
  &lt;property index=&quot;2&quot; type=&quot;Number&quot;&gt;44&lt;/property&gt;
&lt;/property&gt;
</pre>
<p>Flash Player 10から搭載されたVector型についても変換・復元が可能です。</p>
<h3>任意のクラス</h3>
<p>任意のクラス(ビルドイン・カスタム)も変換・復元が可能です。任意のクラスの型指定を再現できるというのが非常に便利な点で、型指定ができるので未然のトラブルを防ぐことができます。</p>
<p>new Point(100,100)</p>
<pre class="brush: jscript;">

&lt;property type=&quot;flash.geom::Point&quot;&gt;
  &lt;property name=&quot;x&quot; type=&quot;Number&quot;&gt;100&lt;/property&gt;
  &lt;property name=&quot;y&quot; type=&quot;Number&quot;&gt;100&lt;/property&gt;
&lt;/property&gt;
</pre>
<p>ライブラリはas3corelibを拡張したもので、as3corelibと同等のテストをFlex Unit 4でチェックしたのでおそらく問題がないはず。何か不足している点や問題点などがありましたら<a href="http://twitter.com/clockmaker">Twitter</a>などでお気軽に声をかけてくださいませ。</p>
<h3>あわせて確認しておきたい関連記事</h3>
<ul>
<li><a href="http://clockmaker.jp/blog/2010/07/actionscript-data/" title="ActionScriptでのデータ保存形式の比較(XML・JSON・ByteArray) | ClockMaker Blog">ActionScriptでのデータ保存形式の比較(XML・JSON・ByteArray) </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/08/xmlserializer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>池田 泰延</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>池田 泰延</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>池田 泰延</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>池田 泰延</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>2</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>池田 泰延</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にプリインストールされていないので、<span style="text-decoration: line-through;">されているかは忘れてしまったのですが</span><span style="text-decoration: line-through;">、もし入っていない場合は</span>記事「<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>以上となります。</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>
<h3>当ブログ内の関連記事</h3>
<ul>
<li><a title="FlashDevelopでASDocを作る方法＋SVNでASDocを公開する方法の解説ビデオ | ClockMaker Blog" href="../2010/08/flashdevelop-asdoc/">FlashDevelopでASDocを作る方法＋SVNでASDocを公開する方法の解説ビデオ<br />
</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://clockmaker.jp/blog/2010/06/fat-swc/feed/</wfw:commentRss>
		<slash:comments>6</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>池田 泰延</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>池田 泰延</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>8</slash:comments>
		</item>
	</channel>
</rss>

