<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>宇都宮ウエブ制作所 &#187; ActionScript</title>
	<atom:link href="http://utweb.jp/blog/archives/tag/actionscript/feed" rel="self" type="application/rss+xml" />
	<link>http://utweb.jp/blog</link>
	<description>宇都宮さんっていう、夫婦でやってるウエブサイト制作請負の大阪下町家内製手工業業務日誌</description>
	<lastBuildDate>Thu, 02 Feb 2012 14:35:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://utweb.jp/blog/archives/tag/actionscript/feed" />
		<item>
		<title>Progression3でクラススタイルにコンポーネントを連携させる（1/3）</title>
		<link>http://utweb.jp/blog/archives/567</link>
		<comments>http://utweb.jp/blog/archives/567#comments</comments>
		<pubDate>Tue, 01 Dec 2009 18:11:13 +0000</pubDate>
		<dc:creator>正宗</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Progression]]></category>

		<guid isPermaLink="false">http://utweb.jp/blog/?p=567</guid>
		<description><![CDATA[世間はProgression4の話題でもちきりですが、いまだProgression3の話題を書こうとしている流行にうとい男、正宗です。
以前紹介した「Progressionでコンポーネントスタイルにクラスを連携させる」の [...]]]></description>
			<content:encoded><![CDATA[<p>世間はProgression4の話題でもちきりですが、いまだProgression3の話題を書こうとしている流行にうとい男、正宗です。<br />
以前紹介した「<a href="/blog/archives/321" target="_self">Progressionでコンポーネントスタイルにクラスを連携させる</a>」の続きです。<br />
今回から進めて全3回の予定でやってみます。</p>
<p>以前紹介したやり方は「まずコンポーネントスタイルで作ってみて、ちょっとずつクラスを混ぜ込んでみよう」というものでしたが、今回からは「<strong>いかにスクリプトを書かずにすむようにスクリプトを書くか</strong>」です。</p>
<p>一見、矛盾してそうなコンセプトですが、前回よりも研究結果がだいぶ洗練されてきたので、スクリプトアレルギーの方も、よりコピペだけでまともに動かせるようにはなっていったかなと思います(^^;<br />
<span id="more-567"></span></p>
<h3>作り方は違うけどできあがりは前回とほぼ同じパターン</h3>
<p>前回は、最初クラスベースでプロジェクトを作っておいて、<a href="http://progression.jp/ja/doc/ref/component/#item-ProgressionLoader" target="_blank">EasyCastingLoaderコンポーネント</a>をステージに置くことで無理矢理コンポーネントベーススタイルに戻すという方法をとっていました。</p>
<p>今回は結果は同じなんですがクラスだけで完結するパターンを考えてみました。</p>
<p>いちおう前提として<a href="http://progression.jp/ja/doc/tutorial/component/" target="_blank">Progressionコンポーネントスタイルガイド</a>での制作は出来るものとして進めていきます。</p>
<h4>先ずはプロジェクトを作成</h4>
<div id="attachment_572" class="wp-caption alignnone" style="width: 160px"><a href="http://utweb.jp/blog/wp-content/uploads/2009/12/6fce63368ed0709e876d6b9b914f9756.png"><img class="size-thumbnail wp-image-572" title="プロジェクトエディタ" src="http://utweb.jp/blog/wp-content/uploads/2009/12/6fce63368ed0709e876d6b9b914f9756-150x150.png" alt="クラスベースでプロジェクトを作成します" width="150" height="150" /></a><p class="wp-caption-text">クラスベースでプロジェクトを作成します</p></div>
<p>普通にクラスベースのプロジェクトが出来ます。</p>
<h4>シーンエディタでシーンを編集</h4>
<div id="attachment_574" class="wp-caption alignnone" style="width: 277px"><a href="http://utweb.jp/blog/wp-content/uploads/2009/12/24a00cc2fa41054b16f0096045f62b9b.png"><img class="size-medium wp-image-574" title="シーンエディタ" src="http://utweb.jp/blog/wp-content/uploads/2009/12/24a00cc2fa41054b16f0096045f62b9b-267x300.png" alt="コンポーネントスタイルと同じようにシーンエディタでシーンを作ります" width="267" height="300" /></a><p class="wp-caption-text">コンポーネントスタイルと同じようにシーンエディタでシーンを作ります</p></div>
<p>うまくシーンが出来たら、プロジェクトで出来たフォルダに「deploy」ってフォルダがさらに出来てるのでその中に「easycasting.xml」と名前を付けて保存しましょう。</p>
<p>というか、ここはコンポーネントと同じです。</p>
<h4>Index.asの編集</h4>
<p><a href="http://utweb.jp/blog/wp-content/uploads/2009/12/0e25fbd1ec3dfef67bed6b3859684bfe.png"><img class="alignleft size-medium wp-image-575" title="ファイル構成" src="http://utweb.jp/blog/wp-content/uploads/2009/12/0e25fbd1ec3dfef67bed6b3859684bfe-168x300.png" alt="ファイル構成" width="168" height="300" /></a>プロジェクトの作成の際にパッケージ名やメインクラスの設定を変えていなければ、src/classes/myproject/Index.asというファイルが出来ていると思います。</p>
<p>これがドキュメントクラスというやつで、まあ言ってみれば一番最初に実行される奴です。前回はステージのプロパティからこれを消して、その代わりにEasyCastingLoaderコンポーネントをステージに置くことでクラスベースからコンポーネントベースに変更していました。<br />
今回はこのドキュメントクラスをそのまま使ってEasyCastingLoaderコンポーネントの代わりに働いてもらうことにします。</p>
<p>Index.asファイルを開くと、60行目あたりに</p>
<pre class="actionscript"><span style="color: #808080; font-style: italic;">// Progression インスタンスを作成します。</span>
prog = <span style="color: #000000; font-weight: bold;">new</span> Progression<span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">&quot;index&quot;</span>, <span style="color: #0066CC;">stage</span>, IndexScene <span style="color: #66cc66;">&#41;</span>;</pre>
<p>とあります。<br />
どうやらこのあたりがクラスベースの最初に動作するとこらへんっぽいです。</p>
<p>そこでこのあたりを一気に書き換えてしまいます。コンポーネントベースと同じ動きにしたいので、EasyCastingLoaderクラスと言う奴を使います。<br />
このEasyCastingLoaderクラスとはEasyCastingLoaderコンポーネントと名前が似てますが、というか「クラス」と「コンポーネント」のとこ以外は名前が一緒なので、たぶん同じような動きをするクラスなんだなと思います。<br />
試しにIndex.asの58行目から65行目あたり（つまり最後まで）を全部削って、この一行にかえてみます。</p>
<pre class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> easyCastingLoader:EasyCastingLoader = <span style="color: #000000; font-weight: bold;">new</span> EasyCastingLoader<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">stage</span>, <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;easycasting.xml&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>はっきり言ってしまえば、これで終わりです。あとはコンポーネントスタイルと同じように進めていったら、Flashサイトが出来てしまいます。素晴らしすぎます。Progression。</p>
<p>いちおう蛇足的にいろいろと書き足してみたIndex.asをまとめてさらしておきます。</p>
<pre class="actionscript">package myproject <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageAlign</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageQuality</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">StageScaleMode</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">ProgressEvent</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">net</span>.<span style="color: #006600;">URLRequest</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">casts</span>.<span style="color: #006600;">*</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">commands</span>.<span style="color: #006600;">*</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">core</span>.<span style="color: #006600;">debug</span>.<span style="color: #006600;">Verbose</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">*</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">loader</span>.<span style="color: #006600;">*</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">*</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">scenes</span>.<span style="color: #006600;">*</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">core</span>.<span style="color: #006600;">ui</span>.<span style="color: #006600;">*</span>;
	<span style="color: #0066CC;">import</span> jp.<span style="color: #006600;">progression</span>.<span style="color: #006600;">core</span>.<span style="color: #006600;">utils</span>.<span style="color: #006600;">*</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">*</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">/**
	 * Index クラス
	 */</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> <span style="color: #0066CC;">Index</span> <span style="color: #0066CC;">extends</span> CastDocument <span style="color: #66cc66;">&#123;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * Progression インスタンスを取得します。
		 */</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> prog:Progression;
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * コンストラクタ
		 */</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">Index</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * SWF ファイルの読み込みが完了し、stage 及び loaderInfo にアクセス可能になった場合に送出されます。
		 */</span>
		protected override <span style="color: #000000; font-weight: bold;">function</span> _onInit<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">// stage の初期設定を行います。</span>
			<span style="color: #0066CC;">align</span> = StageAlign.<span style="color: #006600;">TOP_LEFT</span>;
			<span style="color: #0066CC;">quality</span> = StageQuality.<span style="color: #006600;">HIGH</span>;
			<span style="color: #0066CC;">scaleMode</span> = StageScaleMode.<span style="color: #006600;">NO_SCALE</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// 開発者用の出力を有効化します。</span>
			<span style="color: #808080; font-style: italic;">//Verbose.enabled = true;</span>
			<span style="color: #808080; font-style: italic;">//Verbose.filteringCommand();</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">// コンテキストメニューを使用しない場合true</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
				Progression.<span style="color: #006600;">uiContextMenu</span>.<span style="color: #0066CC;">enabled</span> = <span style="color: #000000; font-weight: bold;">false</span>;
				CastObjectContextMenu.<span style="color: #0066CC;">enabled</span> = <span style="color: #000000; font-weight: bold;">false</span>;
				CastButtonContextMenu.<span style="color: #0066CC;">enabled</span> = <span style="color: #000000; font-weight: bold;">false</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">// Progression インスタンスを作成します。</span>
			<span style="color: #808080; font-style: italic;">//prog = new Progression( &quot;index&quot;, stage, IndexScene );</span>
			<span style="color: #000000; font-weight: bold;">var</span> easyCastingLoader:EasyCastingLoader = <span style="color: #000000; font-weight: bold;">new</span> EasyCastingLoader<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">stage</span>, <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;easycasting.xml&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
			easyCastingLoader.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
				prog = <span style="color: #0066CC;">e</span>.<span style="color: #0066CC;">target</span>.<span style="color: #006600;">progression</span>;
&nbsp;
				<span style="color: #808080; font-style: italic;">// ブラウザ再生時に URL 同期を有効化します。</span>
				prog.<span style="color: #006600;">sync</span> = <span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
				<span style="color: #808080; font-style: italic;">//あとはお好みに応じて…</span>
				<span style="color: #808080; font-style: italic;">//</span>
				<span style="color: #808080; font-style: italic;">//ページ遷移中はボタンを押せないようにする場合はtrueにする</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>==<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
					prog.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ProcessEvent.<span style="color: #006600;">PROCESS_START</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:ProcessEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
						<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">mouseChildren</span> = <span style="color: #000000; font-weight: bold;">false</span>;
					<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
					prog.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ProcessEvent.<span style="color: #006600;">PROCESS_COMPLETE</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:ProgressEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
						<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">mouseChildren</span> = <span style="color: #000000; font-weight: bold;">true</span>;
					<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
				<span style="color: #808080; font-style: italic;">//ブラウザ再生時URL同期をONにした場合、直リンクなどで間違ったシーンIDのときIndexSceneに飛ばす</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>prog.<span style="color: #006600;">sync</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
					prog.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>ProcessEvent.<span style="color: #006600;">PROCESS_ERROR</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:ProgressEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
						prog.<span style="color: #0066CC;">goto</span><span style="color: #66cc66;">&#40;</span>prog.<span style="color: #006600;">firstSceneId</span><span style="color: #66cc66;">&#41;</span>;
					<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre>
<p>自分で紹介しておいてなんですが、今回の方法そのものにはあんまりメリットがありません。<br />
クラスをこう書いたから、コンポーネントスタイルガイドと同じ事が出来たよ、というだけでは、じゃあ最初からコンポーネントで作ればいいからです。<br />
ただ、ここから必要なぶんだけちょっとずつクラスを混ぜていくことになります。僕もまだ研究段階なので「こうしたほうがいいよ」いうものではないですが、「こういう方法もあるよ」というくらいのまとめ方はして、次回に発表したいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://utweb.jp/blog/archives/567/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://utweb.jp/blog/archives/567" />
	</item>
		<item>
		<title>CSS Nite in OSAKA, Vol.16サンプル、スライド置き場</title>
		<link>http://utweb.jp/blog/archives/373</link>
		<comments>http://utweb.jp/blog/archives/373#comments</comments>
		<pubDate>Tue, 09 Jun 2009 08:47:36 +0000</pubDate>
		<dc:creator>正宗</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[イベント]]></category>
		<category><![CDATA[サンプル]]></category>
		<category><![CDATA[セミナー]]></category>
		<category><![CDATA[ダウンロード]]></category>

		<guid isPermaLink="false">http://utweb.jp/blog/?p=373</guid>
		<description><![CDATA[CSS Nite in OSAKA, Vol.16に使用したサンプルとスライドです。
こちらからダウンロードして下さい。
CSS_Nite_OSAKA_vol16_masamune_sample.zip
サンプルはご本人 [...]]]></description>
			<content:encoded><![CDATA[<p>CSS Nite in OSAKA, Vol.16に使用したサンプルとスライドです。</p>
<p>こちらからダウンロードして下さい。</p>
<p><a href="http://utweb.jp/samples/other/CSS_Nite_OSAKA_vol16_masamune_sample.zip">CSS_Nite_OSAKA_vol16_masamune_sample.zip</a></p>
<p>サンプルはご本人の学習目的での使用においてご自由に使って頂いて結構ですが、むやみな転載や再配布はお控え下さい。</p>
]]></content:encoded>
			<wfw:commentRss>http://utweb.jp/blog/archives/373/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://utweb.jp/blog/archives/373" />
	</item>
		<item>
		<title>CSS Nite in OSAKA, Vol.16補足ツボ</title>
		<link>http://utweb.jp/blog/archives/344</link>
		<comments>http://utweb.jp/blog/archives/344#comments</comments>
		<pubDate>Tue, 09 Jun 2009 08:47:09 +0000</pubDate>
		<dc:creator>正宗</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[イベント]]></category>
		<category><![CDATA[セミナー]]></category>

		<guid isPermaLink="false">http://utweb.jp/blog/?p=344</guid>
		<description><![CDATA[皆様、CSS Nite in OSAKA, Vol.16 「これから始めるFlashActionScriptツボのツボ」にお越し頂きありがとうございました。ActionScriptをこれから始めてみようというきっかけにな [...]]]></description>
			<content:encoded><![CDATA[<p>皆様、<a href="http://osaka.cssnite.jp/cssnite-in-osaka/event-info/vol16/317/" target="_blank">CSS Nite in OSAKA, Vol.16</a> 「これから始めるFlashActionScriptツボのツボ」にお越し頂きありがとうございました。ActionScriptをこれから始めてみようというきっかけになれば幸いです。</p>
<p>セミナーでは「とにかくこう書いてみれば動くので始めてみるきっかけになれば」という部分のみに焦点を当てて紹介しておりますので、なるべくかみ砕いて幾つかの部分であえて簡略的な表現をこころがけています。<br />
はじめて触るぶんには必要としないであろう知識ですが、これから本格的に学習される方に向けて出来るだけ詳細な情報を補足という形でここにまとめさせていただきます。<br />
<span id="more-344"></span></p>
<h3>ActionScriptのバージョンについて</h3>
<ul>
<li>「アクション」
<ul>
<li>stop(),gotoAndPlay()などのフレームの制御ができる</li>
<li>オブジェクトのドラッグドロップやボタンアクションなどのある程度のインタラクションが可能</li>
<li>変数や条件分岐などはあったが、入力が独自インターフェースのみで直接スクリプトを記述できなかったのが特徴＜/li&gt;</li>
</ul>
</li>
<li>ActionScript1
<ul>
<li>フレームアクション、ボタンアクション、クリップアクションなどに直接スクリプトの記述が可能になった</li>
<li>関数が使えるようになった</li>
<li>JavaScriptライクな記述が可能になった（ECMAScript準拠）</li>
<li>全てをオブジェクトとして扱う</li>
</ul>
</li>
<li>ActionScript2
<ul>
<li>AS1を拡張してクラスや変数の型が扱えるようになった</li>
<li>それによってよりオブジェクト指向よりな記述が可能になった</li>
<li>AS1との「ある程度」の互換性を持たせたことが特徴</li>
<li>変数の型宣言などはデバッグには役立つが処理速度向上にはつながらなかったため、普及率としてはAS1とどっちつかず？</li>
</ul>
</li>
<li>ActionScript3
<ul>
<li>以前までのASとは実行エンジンレベルで変更した（SWFの内部でスクリプトを処理していたActionScript Virtual Machineという実行エンジンのバージョンを従来の1から２へとメジャーバージョンアップ）</li>
<li>そのためAS1、AS2とは互換性が無い</li>
<li>厳密な型のチェックや型宣言などにより処理速度やデバッグ環境が向上したのが主な特徴</li>
<li>ボタンアクション、クリップアクションの廃止。記述は必ずフレームアクションかasファイルに書かなければならない</li>
<li>以上のことから初心者に少し敷居が高くなったように感じられるのは事実</li>
</ul>
</li>
</ul>
<p>個人的な見解も混ざっていますが、以上がActionScriptのバージョンの遍歴になります。</p>
<p>では初心者はAS2以前を勉強した方がいいのか、それともAS3を勉強した方が良いのかは意見が分かれますが、AdobeがAS2以前の実行環境を用意している以上はどちらでも良いとも言えますし、今後AS2以前の環境が残される保証がないことと今後の新機能はAS3のみに追加されることが予想されるのでなるべくAS3から始めた方が良いとも言えます。</p>
<p>僕個人としてはせっかく最初から覚えるならなるべくAS3からはじめたほうがいいと思っています。<br />
理由としてはセミナーのように最初はgotoやstop、マウスアクションから入るのでとっかかりにそんなに差異がないと考えているからです。<br />
とはいえ、初心者の方にはAS3の厳密な型のチェックが独学する上で重大な障壁になる恐れもあります。<br />
AS2以前では当たり前だった、root.gotoAndPlay(10);とかでもAS3ではいきなり型のチェックでエラーになったりするので、これからAS3を学ばれる方は最初に「型」と「クラス」の基礎について十分理解を深めておくことをお勧めします。</p>
<h3>addEventListenerについて</h3>
<p>AS3では「何かあったら動く」記述はほぼ全てaddEventListenerに集約されています。<br />
詳細は大重美幸さんの著書「<a href="http://oshige.com/flash/as3note/" target="_blank">ActionScript3.0入門ノート</a>」（大重さんのサイトに飛びます。サイト内にアマゾンへのリンクがあります）が参考になるかと思います。大重さんの本でも書かれてあることですが、イベントリスナーを理解することはAS3を理解することに直結してきますので、ここでもaddEventListenerの記述のしかたについては十分に補足したいと思います。</p>
<h4>パターン１</h4>
<pre class="actionscript">addEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">//ここに命令を書く</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<h4>パターン２</h4>
<pre class="actionscript">addEventListener<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;click&quot;</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">//ここに命令を書く</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<h4>パターン３</h4>
<pre class="actionscript">addEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, hoge<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> hoge<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">//ここに命令を書く</span>
<span style="color: #66cc66;">&#125;</span></pre>
<p>上の３つのパターンは書き方は微妙に違っていますが動作は同じものになります。<br />
違いを少しずつ見つけていくことで、呪文のように見えるaddEventListenerの書き方も理解しやすくなるかも知れません。</p>
<h4>パターン１とパターン２の違いについて</h4>
<p>パターン１とパターン２の違いは、<strong>MouseEvent.CLICK</strong>と書いてあるか<strong>"click"</strong>と書いてあるかだけです。<br />
試しにFlash上で新規AS3ファイルを開いて、下のスクリプトをコピペして実行してみて下さい。</p>
<pre class="actionscript"><span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span> === <span style="color: #ff0000;">&quot;click&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ふたつは全く同じもの！&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>「出力」ウインドウに「ふたつは全く同じもの！」と表示されるかと思います。<br />
つまりaddEventListenerの括弧の中の一番最初に入る文字（「1番目の引数」と呼ぶ）は<strong>"click"</strong>でも<strong>MouseEvent.CLICK</strong>でもどちらでも良いということになります。ただし<strong>"click"</strong>と書こうとした場合、中身を"clik"とか"kurikku"など間違えて書いてしまうとバグの発見が遅れるなどいろんな問題が起きるので通常はaddEventListenerの第一引数に<strong>"click"</strong>とは書きません。<br />
では何故<strong>MouseEvent.CLICK</strong>と書いた方が良いのか、そもそも<strong>MouseEvent.CLICK</strong>とは何なのか、に関しては今回の記事だけで説明が困難ですが、興味のある方は「static 定数」などのキーワードや「マジックナンバー　マジックワード」などのキーワードで検索することをお勧めします。<a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20070820/279836/" target="_blank">マジック・ナンバーを使ってはいけない</a>といったコラムも参考になるかも知れません。<br />
以前ぼくがセミナーで使った<a href="http://utweb.jp/blog/archives/221">こちらの記事のPDF</a>でも多少説明してあります（今後このサイトでまとめる予定です）。<br />
要点としては、書き方の問題になるんですが<strong>MouseEvent.CLICK</strong>という「定数」と呼ばれるものをここでは用いるのがセオリーとなっています。<br />
addEventListenerまわりでは今後もMouseEventやらEventなどの記述が、一見すると何度も出現して慣れないうちはまぎらわしいのですが「"click"とMouseEvent.CLICKは同じものなんだ、でもaddEventListenerの第一引数ではMouseEvent.CLICKと書いておく方がいいんだ」と頭の片隅にでも覚えておけば便利です。<br />
今後自分でイベントを設定する「カスタムイベント」と呼ばれるものを作成したり、「クラス」や「型の宣言」について学ばれるときに、きっと役に立ちます。</p>
<h4>パターン１とパターン３の違いについて</h4>
<p>ふたつの違いを見つけるために、もう一度パターン１とパターン３を並べてみました。<br />
・パターン１</p>
<pre class="actionscript">addEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">//ここに命令を書く</span>
<span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre>
<p>・パターン３</p>
<pre class="actionscript">addEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, hoge<span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">function</span> hoge<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">//ここに命令を書く</span>
<span style="color: #66cc66;">&#125;</span></pre>
<p>まずパターン３からですが、addEventListenerの括弧の中の2番目に入る文字（「2番目の引数」と呼ぶ）に「hoge」などという適当な名前を入れておいて、2行目以降にその「hoge」という関数を作っている、という流れになります。<br />
つまり1行目の「hoge」は関数の名前を入れている、ということになります。<br />
そしてパターン１ですが、パターン３の2行目以降の関数を定義する（名前付き関数を作る）記述を省いて、addEventListenerの2番目の引数にいきなり関数を書いています。<br />
パターン１のようにいきなり関数を書くことを「匿名関数」とか「関数リテラル」と呼びますが、書き方としては「匿名」という文字通り、この場合は名前をつけません。</p>
<p>そのほか、パターン１では最後3行目に「<strong>});</strong>」などという一見意味不明な記号の羅列のようにも見られる記述がありますが、これは中括弧｛｝と括弧（）の閉じ忘れを注意深く見ればaddEventListenerの直後に開き括弧（が来てて、そのあと開き中括弧｛がきてるので今度は開いた順番と逆に閉じてることに気付けば、パターン１の呪文のような記述も理解の糸口が見えてきます。</p>
<p>実際の制作では第二引数に匿名関数を使うか名前付き関数を使うかについてはケースバイになるかと思います。<br />
今回のセミナーでは「とりあえずコピペでも動くスクリプト」をご紹介したかったため、名前付き関数の名前の書き間違いや重複によるエラーを回避するために、匿名関数での書き方のみの紹介となりました。</p>
<p>まとめますとaddEventListenerについては、先ずは第一引数に「何が起こったか」を文字として書き入れて、第二引数に「そうなったら次にどうしたいのか」を関数として書き入れる、<br />
第一引数はただ単に文字列を入れても良いけど「MouseEvent.CLICK」などのあらかじめ定義されてある「定数」を使うのがセオリー、<br />
第二引数については関数を入れればよいが匿名関数にするか名前付き関数にするかはケースバイなので、その都度都合の良い方、もしくは自分でわかりやすい書き方をすれば良い、<br />
ということになります。</p>
<h3>参考書籍、参考サイト</h3>
<p>僕が普段から参考にさせて頂いているサイトや書籍を紹介します。<br />
サイトに関しては本当はもっとあるんですが、挙げていくときりがないので入門にお勧めなサイトを絞ってあります。</p>
<ul>
<li>書籍
<ul>
<li><a href="http://oshige.com/flash/as3note/" target="_blank">ActionScript3.0入門ノート</a>
<ul>
<li>記事中にも紹介しましたが僕がAS2からAS3へ移行したときに一番お世話になった本です。とにかく入門にお勧めです。これがないと始まらない！</li>
</ul>
</li>
<li><a href="http://www.borndigital.co.jp/book/detail.php?id=29" target="_blank">ActionScript 3.0 アニメーション</a>
<ul>
<li>より高度なアニメーションに関してのScriptの知識が得られます。値段以上の価値があるのでこちらも非常にお勧めです</li>
</ul>
</li>
<li><a href="http://www.oreilly.co.jp/books/9784873113715/toc.html" target="_blank">初めてのActionScript3.0</a>
<ul>
<li>プログラマに定評のあるオライリー社です。言語をきちんと理解したいプログラマにはこちらの本がお勧めです</li>
</ul>
</li>
<li><a href="http://book.mycom.co.jp/book/4-8399-2193-8/4-8399-2193-8.shtml" target="_blank">ActionScript3.0ゲームプログラミング</a>
<ul>
<li>そのものズバリな内容です。FlashでActionScriptを学びたいという方はゲームを作りたいという目的の方はけっこう多いので。</li>
</ul>
</li>
<li><a href="http://ec.nikkeibp.co.jp/item/books/P81950.html" target="_blank">オブジェクト指向でなぜつくるのか</a>
<ul>
<li>直接ActionScriptについて解説してある本ではないですが、僕が最近読んだ技術書の中でお勧めです。AS3自体がバッキバキのオブジェクト指向で出来ているので、AS3についてのより深い理解につながりました</li>
</ul>
</li>
</ul>
</li>
<li>サイト
<ul>
<li><a href="http://www.flash-jp.com/" target="_blank">Flash-jp</a>
<ul>
<li>Flashで困ったことがあればまずこちらで検索すれば大抵の問題は解決するかと思います</li>
</ul>
</li>
<li><a href="http://f-site.org/" target="_blank">f-site</a>
<ul>
<li>Flashの旬な話題が盛りだくさんです</li>
</ul>
</li>
<li><a href="http://gihyo.jp/dev/serial/01/as3" target="_blank">ActionScript 3.0で始めるオブジェクト指向スクリプティング</a>
<ul>
<li>AS3について詳しく書かれています。</li>
</ul>
</li>
<li><a href="http://www.project-nya.jp/modules/weblog/details.php?blog_id=541" target="_blank">にゃあプロジェクト　ウェブログFlash関連記事</a>
<ul>
<li>AS2関連の情報について、ものすごい量のサンプルで解説されています</li>
</ul>
</li>
<li><a href="http://hakuhin.hp.infoseek.co.jp/" target="_blank">HAKUHIN's home page -Flashゲーム講座-</a>
<ul>
<li>こちらもAS1からAS3まで、もの凄い量で解説されていますのでゲーム開発にかかわらず参考になります</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>なおリンク先に関しては僕の一方的な判断で張っています。当然のことながらリンク先のサイト管理者はこの記事を知りませんしCSS Nite in OSAKA, Vol.16のイベントに関しても関与しておりません。<br />
なので例えばFLASH-jpのサイトに行っていきなり「この間のイベントのことなんですけど」なんて質問しても誰もわからないと思いますのでご注意下さい。念のため。</p>
<h3>最後に</h3>
<p>せっかくActionScriptに興味を持ったのなら、「難しいことは考えずにとにかく動く楽しさから入って貰いたい」という気持ちと「せっかくなのであれも知って欲しいしこれも知って欲しい」という気持ちから、こうした形で補足としてまとめさせて頂きました。<br />
「ここは違うんじゃないの？」とか「ここってどうなの？」等のご指摘やご意見、ご質問ありましたら下のコメント欄に残して頂くと幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>http://utweb.jp/blog/archives/344/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://utweb.jp/blog/archives/344" />
	</item>
		<item>
		<title>CSS Nite in OSAKA, Vol.16 出演します</title>
		<link>http://utweb.jp/blog/archives/339</link>
		<comments>http://utweb.jp/blog/archives/339#comments</comments>
		<pubDate>Thu, 28 May 2009 10:14:57 +0000</pubDate>
		<dc:creator>正宗</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[イベント]]></category>
		<category><![CDATA[セミナー]]></category>

		<guid isPermaLink="false">http://utweb.jp/blog/?p=339</guid>
		<description><![CDATA[6月9日、18:30～20:30
アップルストア心斎橋 2F
CSS Nite in OSAKA, Vol.16に出演します。
詳細はバナーリンクか、こちらのページでご確認下さい。
CSS Nite in OSAKA,  [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 210px"><a href="http://osaka.cssnite.jp/category/cssnite-in-osaka/event-info/vol16/"><img title="CSS Nite in OSAKA, Vol.16" src="http://osaka.cssnite.jp/wp-content/uploads/2009/05/banner_osaka16-200-200.jpg" alt="CSS Nite in OSAKA, Vol.15" width="200" height="200" /></a><p class="wp-caption-text">CSS Nite in OSAKA, Vol.16</p></div>
<p>6月9日、18:30～20:30<br />
アップルストア心斎橋 2F<br />
CSS Nite in OSAKA, Vol.16に出演します。</p>
<p>詳細はバナーリンクか、こちらのページでご確認下さい。<br />
<a href="http://osaka.cssnite.jp/cssnite-in-osaka/event-info/vol16/317/" target="_blank">CSS Nite in OSAKA, Vol.16</a></p>
<p>僕のしゃべる内容としては、「<strong>これから始めるFlashActionScriptツボのツボ</strong>」と題しまして、今までActionScriptに触れたことがない方を対象として「こう書けばすぐ動く」スクリプトをご紹介したいと思います。</p>
<p>僕は今までも大阪でFPSというイベントを行ったりしてきましたが、FPSはもともとFlash好きが集まる前提で開催されますが今回CSSNiteというWEB標準技術を追求する方々の前でお話しさせて頂くと言うこともあり、皆さんが全員Flashに精通されてる方ばかりでもないと思い、FlashActionScriptのかなり初歩的なところの紹介になるかと思います。</p>
<p>ActionScriptを駆使すれば高度なモーションやWEBアプリケーションの作成が可能になることは既に皆さんもご存じですが、今回は「WEBサイトに必要なActionScript」に絞ってボタンインタラクション（ボタンを押したときどう動かすか）だったり、デザインやモーションに必要なXY座標とWidth（幅）Height（高さ）のコントロールについてズバリそのもののScriptをご提供します。</p>
<p>もしかしたら既にActionScriptを学ばれてる方にとっては退屈かもしれませんが、これから挑戦したいという方にとっては、先ずは書いて動かして覚えられる良い機会になれば幸いです。</p>
<p>そのほか、AS2までを学ばれてる方にとって最低これだけは覚えておけばいいAS3との違いなどもまとめる予定です。こちらは以前このブログにまとめておこうと思ってほったらかしにしていた部分なので今回が蔵出しになります。</p>
<p>それでは当日お会いできることを楽しみに準備を進めていきます。お時間のある方はどうぞお越し下さい。<br />
（もちろん懇親会も出る予定です。というかセミナーは出なくても飲み会には必ず顔を出す派）</p>
]]></content:encoded>
			<wfw:commentRss>http://utweb.jp/blog/archives/339/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://utweb.jp/blog/archives/339" />
	</item>
	</channel>
</rss>

