<?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; switch</title>
	<atom:link href="http://www.addchild.net/tag/switch/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>ボタンに連動してムービークリップの表示を変える[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-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>
	</channel>
</rss>
