<?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>ADD CHILD = AS3 &#187; MovieClip</title>
	<atom:link href="http://www.addchild.net/tag/movieclip/feed" rel="self" type="application/rss+xml" />
	<link>http://www.addchild.net</link>
	<description>初心者がFlsah ActionScript 3.0を勉強して行く軌跡です。</description>
	<lastBuildDate>Tue, 09 Feb 2010 04:10:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ムービークリップを徐々に加速させる[3-7]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/370.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/370.html#comments</comments>
		<pubDate>Tue, 05 Jan 2010 08:57:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[MovieClip]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=370</guid>
		<description><![CDATA[カスタムクラスで読み込んだムービークリップに加速度をつけて移動させる

『Math.random() を使ってランダムに色を変える方法』で利用したBall.asを今回も使ってステージにボールを配置します。
X軸はステージ [...]]]></description>
			<content:encoded><![CDATA[<h3>カスタムクラスで読み込んだムービークリップに加速度をつけて移動させる</h3>
<p>
『Math.random() を使ってランダムに色を変える方法』で利用したBall.asを今回も使ってステージにボールを配置します。<br />
X軸はステージの1/5の位置に配置し、Y軸をステージの真ん中に配置させます。（サイズ50と青色を指定）
</p>
<pre class="brush: jscript; auto-links: false;">
//Ball.asを読み込み
var ball:Ball = new Ball(50, 0x0000ff);
addChild(ball);
ball.x = stage.stageWidth / 5;
ball.y = stage.stageHeight / 2;
</pre>
<p>
これでステージにボールが表示されるようになったと思いますので、次にボールを動かすスクリプトを書きます。<br />
今までやってきたムービークリップの動かし方にさらに加速度のプログラムを足します。
</p>
<p><span id="more-370"></span></p>
<pre class="brush: jscript; auto-links: false;">
//イベントリスナー
ball.addEventListener(Event.ENTER_FRAME, loop);

function loop(event:Event):void{
	ball.x += 1;
}
</pre>
<p>
上記が従来ムービークリップのX軸に1を足して動かす方法ですが、下記は1の変わりに変数（vx)を用いてX軸の数値に置き換え、さらに加速変数（ax)をフレームが読み込まれる度に足して変数vxの数値を増やしていく感じになります。
</p>
<pre class="brush: jscript; auto-links: false;">
//イベントリスナー
ball.addEventListener(Event.ENTER_FRAME, loop);

function loop(event:Event):void{
	vx += ax;
	ball.x += vx;
}
</pre>
<p>
こうすることにより、ボールがどんどん加速しているように見えます。<br />
今回は加速度を1に設定しましたが、数値を変えれば加速度を調整できます。<br />
この加速度は色々な場面でも使うことができるので、徐々に何かをしたい時になどに使うと便利です。
</p>
<pre class="brush: jscript; auto-links: false;">
//Ball.asを読み込み
var ball:Ball = new Ball(50, 0x0000ff);
//インスタンスプロパティー
var vx:Number = 0; //初期値
var ax:Number = 1; //加速度

addChild(ball);
ball.x = stage.stageWidth / 5;
ball.y = stage.stageHeight / 2;
//イベントリスナー
ball.addEventListener(Event.ENTER_FRAME, loop);

function loop(event:Event):void{
	vx += ax;
	ball.x += vx;
}
</pre>
<div id="flash">
カスタムクラスで読み込んだムービークリップに加速度をつけて移動させる
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/7-A.swf", "flash", "800", "200", "9.0.0");
</script></p>
<p>
ボールがなくなってたらもう一度更新して下さい。</p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/297.html" title="クラス参照でステージにムービークリップを配置[3-1] (2009年10月7日)">クラス参照でステージにムービークリップを配置[3-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/309.html" title="カスタムクラスでステージにムービークリップを配置[3-3] (2009年10月20日)">カスタムクラスでステージにムービークリップを配置[3-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/286.html" title="クラス参照でステージにムービークリップを配置[3-2] (2009年10月13日)">クラス参照でステージにムービークリップを配置[3-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/316.html" title="Tweenクラスでムービークリップをトゥイーンさせる[3-4] (2009年10月29日)">Tweenクラスでムービークリップをトゥイーンさせる[3-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/370.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TransitionManagerクラスを使ってトランジションさせる[3-6]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/343.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/343.html#comments</comments>
		<pubDate>Wed, 02 Dec 2009 02:18:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[TransitionManager]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=343</guid>
		<description><![CDATA[ステージに配置したムービークリップにTransitionManagerクラスを使ってトランジション効果をつける

[1-8]でフェードインさせるアクションスクリプトとよく似た感じになりますが、TransitionMana [...]]]></description>
			<content:encoded><![CDATA[<h3>ステージに配置したムービークリップにTransitionManagerクラスを使ってトランジション効果をつける</h3>
<p>
[1-8]でフェードインさせるアクションスクリプトとよく似た感じになりますが、TransitionManagerクラスを使用すればもっと違う表現の効果をあたえることができます。
</p>
<p>
タイムライン上にあるアクションスクリプトに、まずTweenクラスとeasingクラスをインポートさせ、使えるようにします。<br />
（[3-4]同様）
</p>
<pre class="brush: jscript; auto-links: false;">
//クラスのインポート
import fl.transitions.*;
import fl.transitions.easing.*;
</pre>
<p>
[3-3]でカクスタムクラスを使ってステージ上にムービークリップを配置しているアクションスクリプトのBallをimgに変更してステージに表示させます。<br />
（[1-8]同様にステージにimg_mcのムービークリップを用意している前提です）
</p>
<p><span id="more-343"></span></p>
<pre class="brush: jscript; auto-links: false;">
// imgクラスからインスタンスを作る
var img:img_mc = new img_mc();
addChild(img);
img.x = stage.stageWidth / 2;
img.y = stage.stageHeight / 2;
</pre>
<p>
表示させるムービークリップにトランジション効果を指定します。
</p>
<pre class="brush: jscript; auto-links: false;">
//トランジション効果
TransitionManager.start(img,{
						type:Blinds, //トランジションタイプ
						direction:Transition.IN,  //transition効果の方向
						duration:1,  //動作時間
						easing:None.easeNone, //イージング設定
						numStrips:10,
						dimension:0
						});
</pre>
<p>
addChildで画像が読み込まれると同時に、トランジション効果が始動する感じになります。
</p>
<pre class="brush: jscript; auto-links: false;">
//クラスのインポート
import fl.transitions.*;
import fl.transitions.easing.*;

// imgクラスからインスタンスを作る
var img:img_mc = new img_mc();
addChild(img);
img.x = stage.stageWidth / 2;
img.y = stage.stageHeight / 2;

//トランジション効果
TransitionManager.start(img,{
						type:Blinds,
						direction:Transition.IN,
						duration:1,
						easing:None.easeNone,
						numStrips:10,
						dimension:0
						});
</pre>
<p>
asファイルに関しては[3-3]と同じになりますので、省略します。<br />
動作が終わっている場合は再読み込みして下さい。
</p>
<div id="flash">
ステージに配置したムービークリップにTransitionManagerクラスを使ってトランジション効果をつける
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/6-A.swf", "flash", "550", "200", "9.0.0");
</script></p>
<h4>トランジションの種類</h4>
<table>
<tr>
<th>トランジションタイプ</th>
<th>説明</th>
</tr>
<tr>
<td>Blinds</td>
<td>ブラインドカーテンみたいに回転します。</td>
</tr>
<tr>
<td>Fade</td>
<td>フェードインまたはフェードアウトします。</td>
</tr>
<tr>
<td>Fly</td>
<td>定した方向からムービークリップをスライドインします。</td>
</tr>
<tr>
<td>Iris</td>
<td>マスクを利用して表示させる</td>
</tr>
<tr>
<td>Photo</td>
<td>カメラのフラッシュに用に一瞬光ります。</td>
</tr>
<tr>
<td>PixelDissolve</td>
<td>チェッカーボードのようなモザイク処理をします。</td>
</tr>
<tr>
<td>Rotate </td>
<td>回転します。</td>
</tr>
<tr>
<td>Squeeze</td>
<td>水平または垂直に拡大/縮小します。</td>
</tr>
<tr>
<td>Wipe</td>
<td>マスクを利用して表示させる。</td>
</tr>
<tr>
<td>Zoom</td>
<td>拡大/縮小しながら表示します。</td>
</tr>
</table>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/202.html" title="ムービークリップをボタンとして使う[2-3] (2009年9月9日)">ムービークリップをボタンとして使う[2-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/192.html" title="ムービークリップをボタンとして使う[2-2] (2009年9月8日)">ムービークリップをボタンとして使う[2-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/184.html" title="ムービークリップをボタンとして使う[2-1] (2009年9月7日)">ムービークリップをボタンとして使う[2-1]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/343.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweenクラスでムービークリップをトゥイーンさせる[3-4]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/316.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/316.html#comments</comments>
		<pubDate>Thu, 29 Oct 2009 01:20:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[Tween]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=316</guid>
		<description><![CDATA[ステージに配置したムービークリップにTweenクラスを使ってトゥイーンさせる

[3-3]でステージに配置したムービークリップにトゥイーンモーションを指定してます。


タイムライン上にあるアクションスクリプトに、まずT [...]]]></description>
			<content:encoded><![CDATA[<h3>ステージに配置したムービークリップにTweenクラスを使ってトゥイーンさせる</h3>
<p>
[3-3]でステージに配置したムービークリップにトゥイーンモーションを指定してます。
</p>
<p>
タイムライン上にあるアクションスクリプトに、まずTweenクラスとeasingクラスをインポートさせ、使えるようにします。
</p>
<pre class="brush: jscript; auto-links: false;">
//クラスのインポート
import fl.transitions.Tween;
import fl.transitions.easing.*;
</pre>
<p>
Tweenクラスに関しては、もっと奥が深いので今回は取り合えず簡単に使えるやり方にします。<br />
詳しくはもっと勉強してからと言うことで…
</p>
<p>
[3-3]でカクスタムクラスを使ってステージ上にムービークリップを配置してますので、さらにTweenクラス用のアクションスクリプトを追記します。
</p>
<pre class="brush: jscript; auto-links: false;">
// モーション設定
var mcTween:Tween;
mcTween = new Tween(my_mc, &quot;y&quot;, Bounce.easeOut, 0, (stage.stageHeight - my_mc.height/2), 5, true);
</pre>
<p><P><br />
変数mcTweenをTweenクラスを指定して宣言し、new演算子でTweenクラスでトゥイーンさせる処理を書きます。<br />
順番としては<br />
①トゥイーンさせるインスタンス名<br />
②変化させたいプロパティ<br />
③アニメーションの種類<br />
④開始値<br />
⑤終了値<br />
⑥継続時間<br />
⑦継続時間の単位<br />
になります。<br />
アニメーションの種類に関しては、あとでまとめます。<br />
</P><br />
<span id="more-316"></span></p>
<p>
今回はムービークリップのY軸にイージング終了時にバンドさせる処理としてます。<br />
カスタムクラスでステージ配置されたムービークリップは初期表示位置x軸はステージ幅の1/10で表示されるが、Y軸に関してはトゥイーンで0からステージの高さ（ステージいっぱい）に移動して、終了時にバウンドするせる感じになります。
</p>
<pre class="brush: jscript; auto-links: false;">
//クラスのインポート
import fl.transitions.Tween;
import fl.transitions.easing.*;

// Ballクラスからインスタンスを作る
var my_mc:Ball = new Ball();
addChild(my_mc);
my_mc.x = stage.stageWidth / 10;

// モーション設定
var mcTween:Tween;
mcTween = new Tween(my_mc, &quot;y&quot;, Bounce.easeOut, 0, (stage.stageHeight - my_mc.height/2), 5, true);
</pre>
<p>
asファイルに関しては[3-3]と同じになりますので、省略します。
</p>
<div id="flash">
Tweenクラスでムービークリップをトゥイーンさせる
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/4-A.swf", "flash", "550", "200", "9.0.0");
</script></p>
<h4>アニメーションの種類</h4>
<table>
<tr>
<th>イージングクラス</th>
<th>説明</th>
</tr>
<tr>
<td>Back</td>
<td>開始値や終了値をいったん超えて戻るアニメーション</td>
</tr>
<tr>
<td>Bounce</td>
<td>バウンドするアニメーション</td>
</tr>
<tr>
<td>Elastic</td>
<td>開始時や終了時に慣性の働くようなアニメーション</td>
</tr>
<tr>
<td>Regular</td>
<td>加速・減速をするアニメーション</td>
</tr>
<tr>
<td>Strong</td>
<td>加速・減速をするアニメーション。Regularよりも動きが極端</td>
</tr>
<tr>
<td>None</td>
<td>等速のトゥイーンアニメーション</td>
</tr>
</table>
<h4>イージンの種類</h4>
<table>
<tr>
<th>イージングメソッド</th>
<th>説明</th>
</tr>
<tr>
<td>easeIn</td>
<td>最初にイージング効果</td>
</tr>
<tr>
<td>easeOut</td>
<td>最後にイージング効果</td>
</tr>
<tr>
<td>easeInOut</td>
<td>両方にイージング効果</td>
</tr>
</table>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/286.html" title="クラス参照でステージにムービークリップを配置[3-2] (2009年10月13日)">クラス参照でステージにムービークリップを配置[3-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/297.html" title="クラス参照でステージにムービークリップを配置[3-1] (2009年10月7日)">クラス参照でステージにムービークリップを配置[3-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/309.html" title="カスタムクラスでステージにムービークリップを配置[3-3] (2009年10月20日)">カスタムクラスでステージにムービークリップを配置[3-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/316.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>カスタムクラスでステージにムービークリップを配置[3-3]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/309.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/309.html#comments</comments>
		<pubDate>Tue, 20 Oct 2009 07:11:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[MovieClip]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=309</guid>
		<description><![CDATA[カスタムクラスを使ってステージにムービークリップを配置

いままでは、タイムライン上（flaファイル）に直接アクションスクリプトを記述してきましたが、今回はasファイル（カスタムクラス）を使って外部からアクションスクリプ [...]]]></description>
			<content:encoded><![CDATA[<h3>カスタムクラスを使ってステージにムービークリップを配置</h3>
<p>
いままでは、タイムライン上（flaファイル）に直接アクションスクリプトを記述してきましたが、今回はasファイル（カスタムクラス）を使って外部からアクションスクリプトを書いていきます。
</p>
<p>
カスタムクラスを使って外部からアクションスクリプトを書く場合には、いくつかルールがあります。<br />
パッケージ名、クラス名、インスタンスの変数、コンストラクタの定義、メソッドの定義を条件に応じて記述しなくてはなりません。
</p>
<pre class="brush: jscript; auto-links: false;">
//パッケージ名
package {
	//インポートするクラス
	import flash.display.MovieClip;
	import flash.events.Event;
	//クラス定義
	public class asファイル名と同じ {
		//変数の宣言
		//コンストラクタの定義
		//メソッド定義
	}
}
</pre>
<p>
パッケージ名とは、クラスが属するパッケージを示します。<br />
パッケージ名を省略すると、デフォルトパッケージと見なされます。その場合はasファイルはflaファイルと同じ階層に置かなくてはなりません。
</p>
<p>
クラス名とは、クラスの名前ですが、アクションスクリプトでは、このクラス名とasファイル名が同じにする必要があります。
</p>
<p><P><br />
インスタンスの変数とは、クラスで使う変数となりますが、外部のクラスから変数にプロパティとしてアクセスするには、publicを指定しなくてなりません。<br />
</P></p>
<p>
コンストラクタの定義とは、実行させたいプログラムを動かす為の定義となります。<br />
これもインスタンスの変数と同様にpublicが必要になります。
</p>
<p>
メソッドの定義とは、簡単に言うと実行するプウログラム本体になります。
</p>
<p><span id="more-309"></span></p>
<p>
flaファイルのステージ配置したいムービークリップをライブラリーに用意して、リンケージ名を付けます。（今回はBallにしました）<br />
さらにasファイルにアクションスクリプトを書いていきます。
</p>
<pre class="brush: jscript; auto-links: false;">
package {
	// インポート
	import flash.display.MovieClip;
	import flash.events.Event;

	public class Ball extends MovieClip {
		// 変数の宣言
		public var myXspeed:Number = 5; // X軸方向の速度
		public var myCicle:Number = 10;  //ボールの回転

		// コンストラクタの定義
		public function Ball() {
			this.addEventListener(Event.ENTER_FRAME, enterF);
		}

		// メソッドの定義（ボールを動かす関数）
		private function enterF(event:Event):void {
			this.x += myXspeed;
			this.rotation += myCicle;
			if(this.x &lt; 50 || this.x &gt; 500){
				myXspeed *= -1;
				myCicle *= -1;
			}
		}
	}
}
</pre>
<p>
今回は同じ階層にasファイルを置くため、パッケージ名は付けてません。<br />
クラス名を先程リンケージで付けた名前のBallとし、保存するファイル名もBall.asにします。
</p>
<p>
次にflaファイルにBall.asを読み込まして、ムービークリップをステージに配置する為に、タイムラインにアクションスクリプトを書きます。
</p>
<pre class="brush: jscript; auto-links: false;">
// Ballクラスからインスタンスを作る
var ball_mc:Ball = new Ball();
addChild(ball_mc);
ball_mc.x = stage.stageWidth / 2;
ball_mc.y = stage.stageHeight / 2;
</pre>
<p>
ball_mc.xとball_mc.yで初期表示位置を指定しています。
</p>
<p>
ムービークリップの動きは[1-5]同じになりますが、アクションスクリプトは外部から読み込んだ状態になっています。
</p>
<div id="flash">
カクタムクラスを使ってステージにムービークリップを配置
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/3-A.swf", "flash", "550", "200", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/297.html" title="クラス参照でステージにムービークリップを配置[3-1] (2009年10月7日)">クラス参照でステージにムービークリップを配置[3-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/286.html" title="クラス参照でステージにムービークリップを配置[3-2] (2009年10月13日)">クラス参照でステージにムービークリップを配置[3-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/316.html" title="Tweenクラスでムービークリップをトゥイーンさせる[3-4] (2009年10月29日)">Tweenクラスでムービークリップをトゥイーンさせる[3-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/309.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>クラス参照でステージにムービークリップを配置[3-2]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/286.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/286.html#comments</comments>
		<pubDate>Tue, 13 Oct 2009 04:06:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[random]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=286</guid>
		<description><![CDATA[クラス（リンケージ）参照でランダムにムービークリップを呼び出す

あらかじめライブラリーに表示させたいムービークリップを用意し、プロパティーでリンケージのクラス名に順番を付けて用意します。（例：img_mc1）

用意で [...]]]></description>
			<content:encoded><![CDATA[<h3>クラス（リンケージ）参照でランダムにムービークリップを呼び出す</h3>
<p>
あらかじめライブラリーに表示させたいムービークリップを用意し、プロパティーでリンケージのクラス名に順番を付けて用意します。（例：img_mc1）</p>
<p>
用意できたら、ムービークリップの順番を配列に置き換えます。
</p>
<pre class="brush: jscript; auto-links: false;">
//配列
var myImg:Array = new Array();
myImg[0] = &quot;img_mc1&quot;
myImg[1] = &quot;img_mc2&quot;
myImg[2] = &quot;img_mc3&quot;
</pre>
<p>
次にランダムで表示させる為のプログラムを用意します。<br />
ランダムで表示させる為には、変数NoにMath.randomを使って、配列の数をランダムに置き換えまる感じになります。
</p>
<pre class="brush: jscript; auto-links: false;">
var No = Math.floor(Math.random()* myImg.length);
</pre>
<p>
さらに、ランダムで置き換えられた変数Noを使って、ステージ上にムービークリップを表示させます。
</p>
<p><span id="more-286"></span></p>
<pre class="brush: jscript; auto-links: false;">
var class_str:String = myImg[No];
var myClass:Class = Class(getDefinitionByName(class_str));
var img:MovieClip = new myClass();
addChild(img);
</pre>
<p>
ランダムで変数Noを決めて、その変数Noの該当する配列の文字列を、getDefinitionByNameでクラス定義しムービークリップとして変数imgに置き換えaddchildでステージ表示させるカラクリになります。
</p>
<pre class="brush: jscript; auto-links: false;">
//配列
var myImg:Array = new Array();
myImg[0] = &quot;img_mc1&quot;
myImg[1] = &quot;img_mc2&quot;
myImg[2] = &quot;img_mc3&quot;

//変数
var No = Math.floor(Math.random()* myImg.length);
var class_str:String = myImg[No];
var myClass:Class = Class(getDefinitionByName(class_str));
var img:MovieClip = new myClass();
addChild(img);
img.x = stage.stageWidth / 2;
img.y = stage.stageHeight / 2;
</pre>
<p>
ステージの中心に表示させる為にstage.stageWidth / 2とstage.stageHeight / 2で表示位置を指定してます。
</p>
<div id="flash">
クラス（リンケージ）参照でランダムにムービークリップを呼び出す
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/2-A.swf", "flash", "550", "200", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/297.html" title="クラス参照でステージにムービークリップを配置[3-1] (2009年10月7日)">クラス参照でステージにムービークリップを配置[3-1]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/309.html" title="カスタムクラスでステージにムービークリップを配置[3-3] (2009年10月20日)">カスタムクラスでステージにムービークリップを配置[3-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/316.html" title="Tweenクラスでムービークリップをトゥイーンさせる[3-4] (2009年10月29日)">Tweenクラスでムービークリップをトゥイーンさせる[3-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-memo/352.html" title="Math.random() を使ってランダムに色を変える方法 (2009年12月11日)">Math.random() を使ってランダムに色を変える方法</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/286.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>クラス参照でステージにムービークリップを配置[3-1]</title>
		<link>http://www.addchild.net/as3-beginner/ls3/297.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls3/297.html#comments</comments>
		<pubDate>Wed, 07 Oct 2009 06:25:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[MovieClip]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=297</guid>
		<description><![CDATA[クラス（リンケージ）参照でムービークリップを動かす

あらかじめライブラリーに表示させたいムービークリップを用意し、プロパティーでリンケージのクラス名を付けます。（例：ball_mc）


new演算子を使ってムービーク [...]]]></description>
			<content:encoded><![CDATA[<h3>クラス（リンケージ）参照でムービークリップを動かす</h3>
<p>
あらかじめライブラリーに表示させたいムービークリップを用意し、プロパティーでリンケージのクラス名を付けます。（例：ball_mc）</p>
<p><img src="http://www.addchild.net/wp-content/uploads/2009/10/3-11.jpg" alt="クラス名を付ける" title="クラス名を付ける" width="402" height="222" class="aligncenter size-full wp-image-302" /></p>
<p>
new演算子を使ってムービークリップballに置き換え、addChildを使ってステージにムービークリップを配置します。
</p>
<pre class="brush: jscript; auto-links: false;">
//ステージに配置
var ball:MovieClip = new ball_mc();
addChild(ball);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
</pre>
<p>
初期表示位置（スタート位置）をステージの真ん中に設定しました。
</p>
<p><span id="more-297"></span></p>
<p>
[1-5]で使用した反復運動するアクションスクリプトを使いムービークリップを動かします。
</p>
<pre class="brush: jscript; auto-links: false;">
//ステージに配置
var ball:MovieClip = new ball_mc();
addChild(ball);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;

var speedx:Number = 5;  //スピード
var cicle:Number = 10;  //回転
var mcWidth:Number = ball.width / 2;  //インスタンスの幅
var stageL:Number = 0 + mcWidth;  //幅の最小値
var stageR:Number = stage.stageWidth - mcWidth;  //幅の最大値

ball.addEventListener(Event.ENTER_FRAME,movieBall);  //イベントリスナー登録

//ballのプログラム関数
function movieBall(event:Event):void {
	ball.x += speedx;
	ball.rotation += cicle;
	if (ball.x &lt; stageL || ball.x &gt; stageR) {
		speedx *= -1;
		cicle *= -1;
	}
}
</pre>
<div id="flash">
クラス（リンケージ）参照でムービークリップを動かす
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/3/1-A.swf", "flash", "550", "200", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls3/370.html" title="ムービークリップを徐々に加速させる[3-7] (2010年1月5日)">ムービークリップを徐々に加速させる[3-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/309.html" title="カスタムクラスでステージにムービークリップを配置[3-3] (2009年10月20日)">カスタムクラスでステージにムービークリップを配置[3-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/286.html" title="クラス参照でステージにムービークリップを配置[3-2] (2009年10月13日)">クラス参照でステージにムービークリップを配置[3-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls3/316.html" title="Tweenクラスでムービークリップをトゥイーンさせる[3-4] (2009年10月29日)">Tweenクラスでムービークリップをトゥイーンさせる[3-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls3/297.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ボタンに連動してムービークリップの表示を変える[2-7]</title>
		<link>http://www.addchild.net/as3-beginner/ls2/284.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls2/284.html#comments</comments>
		<pubDate>Thu, 01 Oct 2009 07:44:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson2]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[navigateToURL]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[URLRequest]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=284</guid>
		<description><![CDATA[配列を利用して複数のボタンにリンクを付けてる

ムービークリップのボタンに飛び先となるURLを指定するのに配列を利用します。
配列にあらかじめ飛び先となるURLを格納して、添字を利用してループ処理を行うような感じになりま [...]]]></description>
			<content:encoded><![CDATA[<h3>配列を利用して複数のボタンにリンクを付けてる</h3>
<p>
ムービークリップのボタンに飛び先となるURLを指定するのに配列を利用します。<br />
配列にあらかじめ飛び先となるURLを格納して、添字を利用してループ処理を行うような感じになります。
</p>
<pre class="brush: jscript; auto-links: false;">
//配列
var url:Array = new Array();
url[1] = &quot;http://www.yahoo.co.jp&quot;;
url[2] = &quot;http://www.google.co.jp&quot;;
url[3] = &quot;http://www.addchild.net&quot;;
</pre>
<p>
ここでは添字を1から始めてますが、本来なら配列は0からはじまることが定められてます。<br />
しかしムービークリップのインスタンス名の数字と合わせる為に、このような手法を取っています。
</p>
<p>
配列の準備が出来れば、マウスダウンした時の処理をループさせます。
</p>
<pre class="brush: jscript; auto-links: false;">
for(var i:int = 1; i &lt; 4; i++){
	if(btn == this[&quot;btn_mc&quot;+i]){
		var link:URLRequest = new URLRequest(url[i]);
		var target:String = &quot;_self&quot;;
		navigateToURL(link,target);
	}
}
</pre>
<p>
switchを利用することも出来ますが、今回はforを使ってプログラム処理を簡略化しています。<br />
下記はswitchのプログラムです。
</p>
<p><span id="more-284"></span></p>
<pre class="brush: jscript; auto-links: false;">
switch(btn){
	//1
	case btn_mc1:
	var google:URLRequest = new URLRequest(&quot;http://www.google.co.jp&quot;);
    var target:String = &quot;_self&quot;;
	navigateToURL(google,target);
	break;
	//2
	case btn_mc2:
	var yahoo:URLRequest = new URLRequest(&quot;http://www.yahoo.co.jp&quot;);
    var target:String = &quot;_self&quot;;
	navigateToURL(yahoo,target);
	//3
	case btn_mc3:
	var addchild:URLRequest = new URLRequest(&quot;http://www.addchild.net&quot;);
    var target:String = &quot;_self&quot;;
	navigateToURL(addchild,target);
}
</pre>
<p>
素人感覚でみるとswitchの方が理解しやすいかもしれませんが、プログラムを簡略させる為にforを使いました。
</p>
<p>
これで飛び先となるURLの指定は完了しましたので、[2-6]で使用したアクションスクリプトにマウスダウンの処理を付け加えます。
</p>
<pre class="brush: jscript; auto-links: false;">
//ループを使う
for(var i:int = 1; i &lt; 4; i++){
	//イベントリスナー登録
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_OVER,Over);
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_OUT,Out);
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_DOWN,Down);

	//ボタンモード
	this[&quot;btn_mc&quot;+i].buttonMode = true;
	//イメージムービークリップを非表示
	this[&quot;img_mc&quot;+i].alpha = 0;
}
//初期状態
img_mc1.alpha = 1;

//マウスオーバー
function Over(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 0.7;
	//条件に合わしてイベントリスナー登録
	for(var i:int = 1; i &lt; 4; i++){
    	if(btn == this[&quot;btn_mc&quot;+i]){
        	this[&quot;img_mc&quot;+i].addEventListener(Event.ENTER_FRAME,imgAlpha);
    	}
	}
}
//アルファプログラム関数
function imgAlpha(event:Event){
	//ムービークリップのチェック
	var img:MovieClip = event.target as MovieClip;
	for(var i:int = 1; i &lt; 4; i++){
		var imgNo:MovieClip = this[&quot;img_mc&quot;+i] as MovieClip;
		imgNo.alpha = 0;
		img.alpha = 1;
		img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
	}
}

//マウスアウト
function Out(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 1;
	//条件に合わしてイベントリスナー登録
	for(var i:int = 1; i &lt; 4; i++){
    	if(btn == this[&quot;btn_mc&quot;+i]){
        	this[&quot;img_mc&quot;+i].addEventListener(Event.ENTER_FRAME,zero);
    	}
	}
}
//リセットプログラム関数
function zero(event:Event):void{
	var img:MovieClip = event.target as MovieClip;
	img.alpha = 1;
	img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
	img.removeEventListener(Event.ENTER_FRAME,zero);
}

//マウスダウン
function Down(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	//配列
	var url:Array = new Array();
	url[1] = &quot;http://www.yahoo.co.jp&quot;;
	url[2] = &quot;http://www.google.co.jp&quot;;
	url[3] = &quot;http://www.addchild.net&quot;;

	for(var i:int = 1; i &lt; 4; i++){
		if(btn == this[&quot;btn_mc&quot;+i]){
			var link:URLRequest = new URLRequest(url[i]);
			var target:String = &quot;_self&quot;;
			navigateToURL(link,target);
		}
	}
}
</pre>
<div id="flash">
配列を利用して複数のボタンにリンクを付けてる
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/2/7-A.swf", "flash", "550", "200", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/263.html" title="ボタンに連動してムービークリップの表示を変える[2-5] (2009年9月17日)">ボタンに連動してムービークリップの表示を変える[2-5]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/202.html" title="ムービークリップをボタンとして使う[2-3] (2009年9月9日)">ムービークリップをボタンとして使う[2-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/192.html" title="ムービークリップをボタンとして使う[2-2] (2009年9月8日)">ムービークリップをボタンとして使う[2-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/269.html" title="ボタンに連動してムービークリップの表示を変える[2-6] (2009年9月29日)">ボタンに連動してムービークリップの表示を変える[2-6]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls2/284.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ボタンに連動してムービークリップの表示を変える[2-6]</title>
		<link>http://www.addchild.net/as3-beginner/ls2/269.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls2/269.html#comments</comments>
		<pubDate>Tue, 29 Sep 2009 08:43:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson2]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[MovieClip]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=269</guid>
		<description><![CDATA[ボタンごとにマウスオーバー（オンマウス）のムービークリップを指定する &#8211; for編

[2-5]で使用したムービークリップのボタンとイメージムービークリップを連動さるアクションスクリプトをもっと簡略化した条件 [...]]]></description>
			<content:encoded><![CDATA[<h3>ボタンごとにマウスオーバー（オンマウス）のムービークリップを指定する &#8211; for編</h3>
<p>
[2-5]で使用したムービークリップのボタンとイメージムービークリップを連動さるアクションスクリプトをもっと簡略化した条件分岐（今回はfor）でプログラム処理をします。
</p>
<p>
マウスオーバー、マウスアウトした時の処理を[2-5]ではswitchを使って条件分岐をしていましたが、今回はforを使って条件分岐を行います。<br />
forを使うことで、アクションスクリプトの簡略化にもつながります。
</p>
<pre class="brush: jscript; auto-links: false;">
//マウスオーバー
function Over(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 0.7;
	//条件に合わしてイベントリスナー登録
	for(var i:int = 1; i &lt; 4; i++){
    	if(btn == this[&quot;btn_mc&quot;+i]){
        	this[&quot;img_mc&quot;+i].addEventListener(Event.ENTER_FRAME,imgAlpha);
    	}
	}
}
//マウスアウト
function Out(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 1;
	//条件に合わしてイベントリスナー登録
	for(var i:int = 1; i &lt; 4; i++){
    	if(btn == this[&quot;btn_mc&quot;+i]){
        	this[&quot;img_mc&quot;+i].addEventListener(Event.ENTER_FRAME,zero);
    	}
	}
}
</pre>
<p>
オンマウス、マウスアウトした時に走るイベントリスナーをforを使ってループさせます。
</p>
<p><span id="more-269"></span></p>
<p>
まず、forで変数iの条件を設定し、ボタンのムービークリップ（btn_mc）を条件が終わるまで+1づつ足していく処理なので、btn_mc1～btn_mc3までを示しすことになります。さらに変数btnはターゲットになっているボタンのムービークリップとなるので、&#8221;btn_mc&#8221;+iの条件と同じ時、つまりはbtn_mc1～btn_mc3でのイベントリスナーが走ります。<br />
リスナー関数も同様に、&#8221;img_mc&#8221;+iとなっているのでimg_mc1～img_mc3がインスタンス名になります。
</p>
<p>
続いてプログラムリスナー関数の条件分岐もforに変更します。
</p>
<pre class="brush: jscript; auto-links: false;">
//アルファプログラム関数
function imgAlpha(event:Event){
	//ムービークリップのチェック
	var img:MovieClip = event.target as MovieClip;
	for(var i:int = 1; i &lt; 4; i++){
		var imgNo:MovieClip = this[&quot;img_mc&quot;+i] as MovieClip;
		imgNo.alpha = 0;
		img.alpha = 1;
		img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
	}
}
//リセットプログラム関数
function zero(event:Event):void{
	var img:MovieClip = event.target as MovieClip;
	img.alpha = 1;
	img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
	img.removeEventListener(Event.ENTER_FRAME,zero);
}
</pre>
<p>
アルファプログラム関数（オンマウス時に走るイベントリスナー）<br />
上記アクションスクリプト同様にforで変数iの条件を設定します。<br />
さらに変数imgNoを宣言し、&#8221;img_mc&#8221;+iでループさせることで、img_mc1～img_mc3までを変数imgNoに置き換えますので、すべてのimg_mcの透明度が0になり非表示になります。<br />
しかしターゲットになっているムービークリップをimgに置き換えて透明度を1していますにで、ターゲットになっているムービークリップだけが表示となるカラクリです。
</p>
<p>
リセットプログラム関数（マウスアウト時に走るイベントリスナー）では、簡潔にターゲットになっているムービークリップの透明度が1、つまり表示になったらリスナー関数の登録の削除を行うカラクリです。
</p>
<pre class="brush: jscript; auto-links: false;">
//ループを使い
for(var i:int = 1; i &lt; 4; i++){
	//イベントリスナー登録
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_OVER,Over);
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_OUT,Out);

	//ボタンモード
	this[&quot;btn_mc&quot;+i].buttonMode = true;
	//イメージムービークリップを非表示
	this[&quot;img_mc&quot;+i].alpha = 0;
}
//初期表示設定
img_mc1.alpha = 1;

//マウスオーバー
function Over(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 0.7;
	//条件に合わしてイベントリスナー登録
	for(var i:int = 1; i &lt; 4; i++){
    	if(btn == this[&quot;btn_mc&quot;+i]){
        	this[&quot;img_mc&quot;+i].addEventListener(Event.ENTER_FRAME,imgAlpha);
    	}
	}
}
//アルファプログラム関数
function imgAlpha(event:Event){
	//ムービークリップのチェック
	var img:MovieClip = event.target as MovieClip;
	for(var i:int = 1; i &lt; 4; i++){
		var imgNo:MovieClip = this[&quot;img_mc&quot;+i] as MovieClip;
		imgNo.alpha = 0;
		img.alpha = 1;
		img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
	}
}

//マウスアウト
function Out(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 1;
	//条件に合わしてイベントリスナー登録
	for(var i:int = 1; i &lt; 4; i++){
    	if(btn == this[&quot;btn_mc&quot;+i]){
        	this[&quot;img_mc&quot;+i].addEventListener(Event.ENTER_FRAME,zero);
    	}
	}
}
//リセットプログラム関数
function zero(event:Event):void{
	var img:MovieClip = event.target as MovieClip;
	img.alpha = 1;
	img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
	img.removeEventListener(Event.ENTER_FRAME,zero);
}
</pre>
<div id="flash">
ボタンごとにマウスオーバー（オンマウス）のムービークリップを指定する &#8211; for
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/2/6-A.swf", "flash", "550", "200", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/192.html" title="ムービークリップをボタンとして使う[2-2] (2009年9月8日)">ムービークリップをボタンとして使う[2-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/284.html" title="ボタンに連動してムービークリップの表示を変える[2-7] (2009年10月1日)">ボタンに連動してムービークリップの表示を変える[2-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/263.html" title="ボタンに連動してムービークリップの表示を変える[2-5] (2009年9月17日)">ボタンに連動してムービークリップの表示を変える[2-5]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/184.html" title="ムービークリップをボタンとして使う[2-1] (2009年9月7日)">ムービークリップをボタンとして使う[2-1]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls2/269.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ボタンに連動してムービークリップの表示を変える[2-5]</title>
		<link>http://www.addchild.net/as3-beginner/ls2/263.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls2/263.html#comments</comments>
		<pubDate>Thu, 17 Sep 2009 08:34:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson2]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[switch]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=263</guid>
		<description><![CDATA[ボタンごとにマウスオーバー（オンマウス）のムービークリップを指定する &#8211; switch編

複数のムービークリップのボタンと複数のイメージムービークリップを連動させ、条件分岐（今回はswitch）でプログラム [...]]]></description>
			<content:encoded><![CDATA[<h3>ボタンごとにマウスオーバー（オンマウス）のムービークリップを指定する &#8211; switch編</h3>
<p>
複数のムービークリップのボタンと複数のイメージムービークリップを連動させ、条件分岐（今回はswitch）でプログラム処理を変えます。<br />
複数のボタンの登録は[2-2]で使用したfor文を使い、ボタンとなるムービークリップのアクションスクリプトを書きます。<br />
さらにステージ上にマウスオーバー時に動かすムービークリップを用意します。<br />
今回は[1-8]で使用したムービークリップを使い、そのムービークリップの色違いを複数用意しステージに配置してインスタンス名を付けます。（今回はimg_mc1.img_mc2にしました）<br />
インスタンス名を付ける時に[2-2]のようにインスタンス名の最後に1からの数字を付けます。
</p>
<p>
マウスオーバー時の処理とマウスアウト時の処理を変更していきます。<br />
[2-2]で使用したアクションスクリプトのマウスオーバーとマウスアウトのプログラムにイメージムービークリップを表示させるプログラムを追加します。
</p>
<pre class="brush: jscript; auto-links: false;">
//マウスオーバー
function Over(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 0.7;
	switch(btn){
		//1
		case btn_mc1:
		//マウスオーバーされたらイベントリスナー登録
		img_mc1.addEventListener(Event.ENTER_FRAME,imgAlpha);
		break;
		//2
		case btn_mc2:
		//マウスオーバーされたらイベントリスナー登録
		img_mc2.addEventListener(Event.ENTER_FRAME,imgAlpha);
		break;
	}
}
//マウスアウト
function Out(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 1;
	switch(btn){
		//1
		case btn_mc1:
		img_mc1.addEventListener(Event.ENTER_FRAME,zero);
		break;
		//2
		case btn_mc2:
		img_mc2.addEventListener(Event.ENTER_FRAME,zero);
		break;
	}
}
</pre>
<p><span id="more-263"></span></p>
<p>
event.targetをbtnに置き換え、そのbtnをswitch文でcaseに該当するイベントリスナーを走らせる感じになります。<br />
この時にcaseなのでbreakを入れないと次の処理までしてしまいますので注意して下さい。
</p>
<p>
次にマウスオーバーした時とマウスアウトした時に動くプログラム関数（リスナー関数）のプログラムを書きます。<br />
今回はプログラム関数でもswitchを使いターゲット別にムービークリップの処理を変えています。<br />
例えば、img_mc1のイベントリスナーが登録されたら、imgAlphaが走りだし、img_mc1を表示させ、img_mc2を非表示にし、さらにイベントリスナーの登録解除させます。<br />
マウスアウト時も同様です。
</p>
<pre class="brush: jscript; auto-links: false;">
//アルファプログラム関数
function imgAlpha(event:Event){
	//ムービークリップのチェック
	var img:MovieClip = event.target as MovieClip;
	switch(img){
		//1
		case img_mc1:
		img_mc1.alpha = 1;
		img_mc2.alpha = 0;
		img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
		break;
		//2
		case img_mc2:
		img_mc1.alpha = 0;
		img_mc2.alpha = 1;
		img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
		break;
	}
}
//リセットプログラム関数
function zero(event:Event):void{
	var img = event.target;
	switch(img){
		//1
		case img_mc1:
		img_mc1.alpha = 1;
		img_mc1.removeEventListener(Event.ENTER_FRAME,imgAlpha);
		img_mc1.removeEventListener(Event.ENTER_FRAME,zero);
		break;
		//2
		case img_mc2:
		img_mc2.alpha = 1;
		img_mc2.removeEventListener(Event.ENTER_FRAME,imgAlpha);
		img_mc2.removeEventListener(Event.ENTER_FRAME,zero);
		break;
	}
}
</pre>
<p>
どのムービークリップのボタンがマウスオーバーやマウスアウトになり、どのイベントリスナーを動かすのかを条件分岐（switch）させて該当するケースでプログラムが動き出すカラクリです。
</p>
<pre class="brush: jscript; auto-links: false;">
//ループを使い
for(var i:int = 1; i &lt; 3; i++){
	//イベントリスナー登録
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_OVER,Over);
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_OUT,Out);

	//ボタンモード
	this[&quot;btn_mc&quot;+i].buttonMode = true;
	//イメージムービークリップを非表示
	this[&quot;img_mc&quot;+i].alpha = 0;
}

//初期表示設定
img_mc1.alpha = 1;

//マウスオーバー
function Over(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 0.7;
	switch(btn){
		//1
		case btn_mc1:
		//マウスオーバーされたらイベントリスナー登録
		img_mc1.addEventListener(Event.ENTER_FRAME,imgAlpha);
		break;
		//2
		case btn_mc2:
		//マウスオーバーされたらイベントリスナー登録
		img_mc2.addEventListener(Event.ENTER_FRAME,imgAlpha);
		break;
	}
}
//アルファプログラム関数
function imgAlpha(event:Event){
	//ムービークリップのチェック
	var img:MovieClip = event.target as MovieClip;
	trace(event.target.name);
	switch(img){
		//1
		case img_mc1:
		img_mc1.alpha = 1;
		img_mc2.alpha = 0;
		img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
		break;
		//2
		case img_mc2:
		img_mc1.alpha = 0;
		img_mc2.alpha = 1;
		img.removeEventListener(Event.ENTER_FRAME,imgAlpha);
		break;
	}
}

//マウスアウト
function Out(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 1;
	switch(btn){
		//1
		case btn_mc1:
		img_mc1.addEventListener(Event.ENTER_FRAME,zero);
		break;
		//2
		case btn_mc2:
		img_mc2.addEventListener(Event.ENTER_FRAME,zero);
		break;
	}
}
function zero(event:Event):void{
	var img = event.target;
	switch(img){
		//1
		case img_mc1:
		img_mc1.alpha = 1;
		img_mc1.removeEventListener(Event.ENTER_FRAME,imgAlpha);
		img_mc1.removeEventListener(Event.ENTER_FRAME,zero);
		break;
		//2
		case img_mc2:
		img_mc2.alpha = 1;
		img_mc2.removeEventListener(Event.ENTER_FRAME,imgAlpha);
		img_mc2.removeEventListener(Event.ENTER_FRAME,zero);
		break;
	}
}
</pre>
<div id="flash">
ボタンごとにマウスオーバー（オンマウス）のムービークリップを指定する &#8211; switch
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/2/5-A.swf", "flash", "550", "200", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls2/284.html" title="ボタンに連動してムービークリップの表示を変える[2-7] (2009年10月1日)">ボタンに連動してムービークリップの表示を変える[2-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/260.html" title="ムービークリップをボタンとして使う[2-4] (2009年9月13日)">ムービークリップをボタンとして使う[2-4]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/192.html" title="ムービークリップをボタンとして使う[2-2] (2009年9月8日)">ムービークリップをボタンとして使う[2-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/269.html" title="ボタンに連動してムービークリップの表示を変える[2-6] (2009年9月29日)">ボタンに連動してムービークリップの表示を変える[2-6]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/184.html" title="ムービークリップをボタンとして使う[2-1] (2009年9月7日)">ムービークリップをボタンとして使う[2-1]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls2/263.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ムービークリップをボタンとして使う[2-4]</title>
		<link>http://www.addchild.net/as3-beginner/ls2/260.html</link>
		<comments>http://www.addchild.net/as3-beginner/ls2/260.html#comments</comments>
		<pubDate>Sun, 13 Sep 2009 08:10:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[lesson2]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[navigateToURL]]></category>
		<category><![CDATA[URLRequest]]></category>

		<guid isPermaLink="false">http://www.addchild.net/?p=260</guid>
		<description><![CDATA[複数のムービークリップのボタン別にリンクを付ける

[2-3]で使用したアクションスクリプトでは、複数のムービークリップに対して一つのリンク先を付けてましが、今回は押されたムービークリップのボタンごとに、別々のリンク先を [...]]]></description>
			<content:encoded><![CDATA[<h3>複数のムービークリップのボタン別にリンクを付ける</h3>
<p>
[2-3]で使用したアクションスクリプトでは、複数のムービークリップに対して一つのリンク先を付けてましが、今回は押されたムービークリップのボタンごとに、別々のリンク先を用意して、条件分岐でリンク先を変更させます。
</p>
<p>
[2-3]で使用したアクションスクリプトのクリック時、またはマウスダウン時のリスナー関数に条件分岐のプログラムを追加します。<br />
今回使う条件分岐はswitchで、ターゲットのムービークリップごとに振り分けて、別々のリンク先を指定するような感じなります。
</p>
<pre class="brush: jscript; auto-links: false;">
//押されたムービークリップで条件分岐
	switch(btn){
		//1
		case btn_mc1:
		var google:URLRequest = new URLRequest(&quot;http://www.google.co.jp&quot;);
		navigateToURL(google);
		break;
		//2
		case btn_mc2:
		var yahoo:URLRequest = new URLRequest(&quot;http://www.yahoo.co.jp&quot;);
		navigateToURL(yahoo);
	}
</pre>
<p><span id="more-260"></span></p>
<p>
クリック時もしくはマウスダウン時のムービークリップのイベントターゲットがbtn_mc1のやbtn_mc2か、どのケースに該当するか判定させています。<br />
イベントターゲットを変数btnに置き換え、そのbtnのターゲットがそのケースに当てはまるかを条件分岐しています。
</p>
<pre class="brush: jscript; auto-links: false;">
//ループを使い
for(var i:int = 1; i &lt; 3; i++){
	//イベントリスナー登録
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_OVER,Over);
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_DOWN,Down);
	this[&quot;btn_mc&quot;+i].addEventListener(MouseEvent.MOUSE_OUT,Out);

	//ボタンモード
	this[&quot;btn_mc&quot;+i].buttonMode = true;
}
//マウスオーバー
function Over(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 0.7;
}
//マウスアウト
function Out(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 1;
}
//マウスダウン
function Down(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
    var target:String = &quot;_self&quot;;

	//押されたムービークリップで条件分岐
	switch(btn){
		//1
		case btn_mc1:
		var google:URLRequest = new URLRequest(&quot;http://www.google.co.jp&quot;);
		var target:String = &quot;_self&quot;;
		navigateToURL(google,target);
		break;
		//2
		case btn_mc2:
		var yahoo:URLRequest = new URLRequest(&quot;http://www.yahoo.co.jp&quot;);
		var target:String = &quot;_self&quot;;
		navigateToURL(yahoo,target);
	}
}
</pre>
<div id="flash">
複数のムービークリップのボタンに条件分岐でリンクを付ける
</div>
<p><script type="text/javascript">
  swfobject.embedSWF("http://www.addchild.net/fl/2/4-A.swf", "flash", "550", "200", "9.0.0");
</script></p>

	<h4>関連する投稿</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.addchild.net/as3-beginner/ls2/284.html" title="ボタンに連動してムービークリップの表示を変える[2-7] (2009年10月1日)">ボタンに連動してムービークリップの表示を変える[2-7]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/202.html" title="ムービークリップをボタンとして使う[2-3] (2009年9月9日)">ムービークリップをボタンとして使う[2-3]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/192.html" title="ムービークリップをボタンとして使う[2-2] (2009年9月8日)">ムービークリップをボタンとして使う[2-2]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/269.html" title="ボタンに連動してムービークリップの表示を変える[2-6] (2009年9月29日)">ボタンに連動してムービークリップの表示を変える[2-6]</a> (0)</li>
	<li><a href="http://www.addchild.net/as3-beginner/ls2/263.html" title="ボタンに連動してムービークリップの表示を変える[2-5] (2009年9月17日)">ボタンに連動してムービークリップの表示を変える[2-5]</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.addchild.net/as3-beginner/ls2/260.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
