Home

ADD CHILD = AS3

カスタムクラスでステージにムービークリップを配置[3-3]

カスタムクラスを使ってステージにムービークリップを配置

いままでは、タイムライン上(flaファイル)に直接アクションスクリプトを記述してきましたが、今回はasファイル(カスタムクラス)を使って外部からアクションスクリプトを書いていきます。

カスタムクラスを使って外部からアクションスクリプトを書く場合には、いくつかルールがあります。
パッケージ名、クラス名、インスタンスの変数、コンストラクタの定義、メソッドの定義を条件に応じて記述しなくてはなりません。

//パッケージ名
package {
	//インポートするクラス
	import flash.display.MovieClip;
	import flash.events.Event;
	//クラス定義
	public class asファイル名と同じ {
		//変数の宣言
		//コンストラクタの定義
		//メソッド定義
	}
}

パッケージ名とは、クラスが属するパッケージを示します。
パッケージ名を省略すると、デフォルトパッケージと見なされます。その場合はasファイルはflaファイルと同じ階層に置かなくてはなりません。

クラス名とは、クラスの名前ですが、アクションスクリプトでは、このクラス名とasファイル名が同じにする必要があります。

インスタンスの変数とは、クラスで使う変数となりますが、外部のクラスから変数にプロパティとしてアクセスするには、publicを指定しなくてなりません。

コンストラクタの定義とは、実行させたいプログラムを動かす為の定義となります。
これもインスタンスの変数と同様にpublicが必要になります。

メソッドの定義とは、簡単に言うと実行するプウログラム本体になります。

続きはこちら »

クラス参照でステージにムービークリップを配置[3-2]

クラス(リンケージ)参照でランダムにムービークリップを呼び出す

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

用意できたら、ムービークリップの順番を配列に置き換えます。

//配列
var myImg:Array = new Array();
myImg[0] = "img_mc1"
myImg[1] = "img_mc2"
myImg[2] = "img_mc3"

次にランダムで表示させる為のプログラムを用意します。
ランダムで表示させる為には、変数NoにMath.randomを使って、配列の数をランダムに置き換えまる感じになります。

var No = Math.floor(Math.random()* myImg.length);

さらに、ランダムで置き換えられた変数Noを使って、ステージ上にムービークリップを表示させます。

続きはこちら »

クラス参照でステージにムービークリップを配置[3-1]

クラス(リンケージ)参照でムービークリップを動かす

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

クラス名を付ける

new演算子を使ってムービークリップballに置き換え、addChildを使ってステージにムービークリップを配置します。

//ステージに配置
var ball:MovieClip = new ball_mc();
addChild(ball);
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;

初期表示位置(スタート位置)をステージの真ん中に設定しました。

ボタンに連動してムービークリップの表示を変える[2-7]

配列を利用して複数のボタンにリンクを付けてる

ムービークリップのボタンに飛び先となるURLを指定するのに配列を利用します。
配列にあらかじめ飛び先となるURLを格納して、添字を利用してループ処理を行うような感じになります。

//配列
var url:Array = new Array();
url[1] = "http://www.yahoo.co.jp";
url[2] = "http://www.google.co.jp";
url[3] = "http://www.addchild.net";

ここでは添字を1から始めてますが、本来なら配列は0からはじまることが定められてます。
しかしムービークリップのインスタンス名の数字と合わせる為に、このような手法を取っています。

配列の準備が出来れば、マウスダウンした時の処理をループさせます。

for(var i:int = 1; i < 4; i++){
	if(btn == this["btn_mc"+i]){
		var link:URLRequest = new URLRequest(url[i]);
		var target:String = "_self";
		navigateToURL(link,target);
	}
}

switchを利用することも出来ますが、今回はforを使ってプログラム処理を簡略化しています。
下記はswitchのプログラムです。

続きはこちら »

ボタンに連動してムービークリップの表示を変える[2-6]

ボタンごとにマウスオーバー(オンマウス)のムービークリップを指定する – for編

[2-5]で使用したムービークリップのボタンとイメージムービークリップを連動さるアクションスクリプトをもっと簡略化した条件分岐(今回はfor)でプログラム処理をします。

マウスオーバー、マウスアウトした時の処理を[2-5]ではswitchを使って条件分岐をしていましたが、今回はforを使って条件分岐を行います。
forを使うことで、アクションスクリプトの簡略化にもつながります。

//マウスオーバー
function Over(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 0.7;
	//条件に合わしてイベントリスナー登録
	for(var i:int = 1; i < 4; i++){
    	if(btn == this["btn_mc"+i]){
        	this["img_mc"+i].addEventListener(Event.ENTER_FRAME,imgAlpha);
    	}
	}
}
//マウスアウト
function Out(event:Event):void{
	var btn = event.target;  //ターゲットを置き換える
	btn.alpha = 1;
	//条件に合わしてイベントリスナー登録
	for(var i:int = 1; i < 4; i++){
    	if(btn == this["btn_mc"+i]){
        	this["img_mc"+i].addEventListener(Event.ENTER_FRAME,zero);
    	}
	}
}

オンマウス、マウスアウトした時に走るイベントリスナーをforを使ってループさせます。

続きはこちら »

ボタンに連動してムービークリップの表示を変える[2-5]

ボタンごとにマウスオーバー(オンマウス)のムービークリップを指定する – switch編

複数のムービークリップのボタンと複数のイメージムービークリップを連動させ、条件分岐(今回はswitch)でプログラム処理を変えます。
複数のボタンの登録は[2-2]で使用したfor文を使い、ボタンとなるムービークリップのアクションスクリプトを書きます。
さらにステージ上にマウスオーバー時に動かすムービークリップを用意します。
今回は[1-8]で使用したムービークリップを使い、そのムービークリップの色違いを複数用意しステージに配置してインスタンス名を付けます。(今回はimg_mc1.img_mc2にしました)
インスタンス名を付ける時に[2-2]のようにインスタンス名の最後に1からの数字を付けます。

マウスオーバー時の処理とマウスアウト時の処理を変更していきます。
[2-2]で使用したアクションスクリプトのマウスオーバーとマウスアウトのプログラムにイメージムービークリップを表示させるプログラムを追加します。

//マウスオーバー
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;
	}
}

続きはこちら »

ムービークリップをボタンとして使う[2-4]

複数のムービークリップのボタン別にリンクを付ける

[2-3]で使用したアクションスクリプトでは、複数のムービークリップに対して一つのリンク先を付けてましが、今回は押されたムービークリップのボタンごとに、別々のリンク先を用意して、条件分岐でリンク先を変更させます。

[2-3]で使用したアクションスクリプトのクリック時、またはマウスダウン時のリスナー関数に条件分岐のプログラムを追加します。
今回使う条件分岐はswitchで、ターゲットのムービークリップごとに振り分けて、別々のリンク先を指定するような感じなります。

//押されたムービークリップで条件分岐
	switch(btn){
		//1
		case btn_mc1:
		var google:URLRequest = new URLRequest("http://www.google.co.jp");
		navigateToURL(google);
		break;
		//2
		case btn_mc2:
		var yahoo:URLRequest = new URLRequest("http://www.yahoo.co.jp");
		navigateToURL(yahoo);
	}

続きはこちら »

ムービークリップをボタンとして使う[2-3]

ムービークリップのボタンにリンクを付ける

[2-1]で使用したアクションスクリプトに、マウスがクリックされた時またはマウスがダウンした時のプログラムに指定したURLのリンクを付けます。
URLのリンクを付ける為には、ActionScript 2.0ではgetURLなどを使い外部ページにアクセスが出来ましたが、ActionScript 3.0ではgetURLに変わる方法でプログラムを書かなくてはなりません。
URLRequestクラスでまずURL情報を指定して、navigateToURLクラスにその情報を渡してリンクさせるみたいな感じになります。

//プログラム関数(マウスダウン)
function Down(event:Event):void{
	//URLRequestの設定
	var Url:URLRequest = new URLRequest("http://www.addchild.net/");
	//ターゲット条件を指定
	var target:String = "_self";
	//指定したURLに飛ばす
	navigateToURL(Url,target);
}

続きはこちら »

ムービークリップをボタンとして使う[2-2]

複数のムービークリップのボタンに同じアクションスクリプトを使う

同じ動きをさせたいムービークリップをステージにそれぞれ配置し、インスタンス名に順番を付けて用意します。(例:btn_mc1)
この時の付ける順番とは、1から始まることが前提です。

ムービークリップに連番を付けたら、for構文を利用し、必要条件までループ処理をさせます。
今回は1~4までの連番を利用して、同じ動きをさせたいムービークリップを、必要な数だけイベントリスナーを用意するみたいな感じになります。
さらにボタンモードとして使用するムービークリップもループさせます。

//ループを使い
for(var i:int = 1; i < 5; i++){
	//イベントリスナー登録
	this["btn_mc"+i].addEventListener(MouseEvent.MOUSE_OVER,Over);
	this["btn_mc"+i].addEventListener(MouseEvent.MOUSE_DOWN,Down);
	this["btn_mc"+i].addEventListener(MouseEvent.MOUSE_OUT,Out);

	//ボタンモード
	this["btn_mc"+i].buttonMode = true;
}

for(var i:int = 1; i < 5; i++)は数字を変数iに置き換え、1以上5未満までプラス1を繰り返す動きになりますので、ムービークリップのbtn_mc1~btn_mc4でイベントリスナーが用意されることになります。
またボタンモードも同様に必要分だけ宣言がだきてることになります。

続きはこちら »

ムービークリップをボタンとして使う[2-1]

ムービークリップのボタンをロールオーバーさせる

ステージにボタンとなる素材を用意し、シンボルに変更→ムービークリップでインスタンス名を付けます。(今回はbtn_mcにしました)
ボタンにマウスが乗った時、クリックされた時、マウスが離れた時のイベントリスナーを書きます。

//イベントリスナー登録
btn_mc.addEventListener(MouseEvent.ROLL_OVER,Over);
btn_mc.addEventListener(MouseEvent.CLICK,Down);
btn_mc.addEventListener(MouseEvent.ROLL_OUT,Out);

マウスイベントでは同じ動きをするイベントがあります。(細かく言うと違います)
マウスオーバー時には、MOUSE_OVERとROLL_OVERがあります。
マウスクリック時には、MOUSE_DOWNとCLICKがあります。
マウスアウト時には、MOUSE_OUTとROLL_OUTがあります。

続きはこちら »

Home

Feeds
Meta

Return to page top