ささきち流 Suzuka & ParaDraw 講座
Suzuka & ParaDraw
TOP
PROFILE
ActionScript Editor
LINK
BBS


フリーのFlash作成ソフト SuzukaParaDraw でFlashな生活を楽しもうというサイトです。
Suzuka 基礎・基本 MovieClip.loadMovieメソッド

 LoadVars.loadメソッド に続いては,MovieClip.loadMovieメソッド です。
 とりあえずはサンプルから。(ゲーム機のような絵ですが,ゲームではありません。)

 

 

 サンプル作成に使用した ParaDraw のバージョンは Ver.0.3a4, Suzuka のバージョンは Ver. 0.7.4.1[RichEdit版] です。
 右にある 「←」と「→」ボタンで 外部JPEG が順次ロードされます。
 ゲーム機みたいな本体部分は ParaDraw で書きましたが,ロードされる JPEG は,何かの付録として付いてきた Photoshop Elements 2.0 で適当に作成したもので,ParaDraw とも Suzuka とも Flash とも関係ありません。  また,左には 「十字キー」風ボタン がありますが,これは loadMovie とは関係がありません。
 『「十字キー」風ボタン も Suzuka で作れるなぁ...。』 と思って作ってみただけで,一応ロードしたJPEGの明暗を変えられますが,単に作ってみた遊びのかざりのようなものです。

 loadMovie には,グローバルな loadMovie関数 と MovieClip.loadMovieメソッド がありますが,Suzuka を使うのでしたら,古い関数にこだわる必要もないと思いますし,MovieClip.loadMovieメソッド の方が使い易いと思います。
 MovieClip はスプライトをレイヤーに配置したものと同じですから,
 「スプライトインスタンス.loadMovie("外部ファイル");」
 という形が基本型です。これが理解できれば,それで OK だと思います。
 外部ファイルは SWF と 普通のJPEG がロード可能で,SWF8 以上を作成する場合,静止GIF,PNG,プログレッシブJPEGのロードも可能です。

 「アニメーションGIF もロードできないし,FLVもロードできないのに,なぜ loadMovie?」
 と思われるかもしれませんが,loadMovie の Movie は本来 SWF を指しています。loadMovie が登場した Flash3 では SWF しかロードできませんでした。だから loadMovie なのです。

 上のサンプルのアクションスクリプトの本体は 右にある「←」と「→」ボタン に書いてあります。
 まず,メインの アクションレイヤー に n = -1; とだけ変数 n の初期値だけを用意しておいて,
 「→」ボタン には次のように書いています。

on(release){
	// 変数 n が 4 未満であれば
	if(n<4){
		// n に 1 を加算
		n++;
	// それ以外は
	}else{
		// n を 0 にする
		n=0;
	}
	// load_mc に 外部 JPEG を読み込む
	load_mc.loadMovie("kiso2/img" + n + ".jpg");
	// テキストフィールド に枚数を代入
	my_txt.text = n+1+"/5";
}

 「←」ボタン には次のように書いています。

on(release){
	// 変数 n が 0 より大きければ
	if(n>0){
		// n から 1 を減算
		n--;
	// それ以外は
	}else{
		// n を 4 にする
		n=4;
	}
	// load_mc に 外部 JPEG を読み込む
	load_mc.loadMovie("kiso2/img" + n + ".jpg");
	// テキストフィールド に枚数を代入
	my_txt.text = n+1+"/5";
}

 // load_mc に 外部 JPEG を読み込む
 load_mc.loadMovie("kiso2/img" + n + ".jpg");

 この,「スプライトインスタンス.loadMovie("外部ファイル");」が,
 MovieClip.loadMovieメソッド の本来の形で,その他が "外部ファイル" の部分をボタンをクリックするたびに動的に変えるしくみです。

 LoadVars.load も loadMovie も,読み込むファイルのファイルパスは,SWFからのパスではなく,SWF を貼り付けて表示させた HTML からのパスになりますので,SWF と HTML を別フォルダに用意する場合は注意してください。

 

 

 これだけではあまり面白味がないので,LoadVars.loadメソッド と MovieClip.loadMovieメソッド とを連動させたのが次のサンプルです。

 

 

 と言っても,見かけ上の動作は最初のものと全く変わりません。変わらないのも何ですから,見た目の色だけは変えましたが,色は本題と全く関係がありません。
 見かけ上の動きは最初のものと同じですが,スクリプトは全然違います。

// カウント用変数 cnt の初期化
cnt = -1;
// →ボタン と ←ボタン を無効にする
r_btn.enabled = false;
l_btn.enabled = false;
//
// LoadVarsクラスのインスタンスを作成
myLV = new LoadVars();
// インスタンスに外部テキストがロードされたときの動作
myLV.onLoad = function(Seikou) {
	// ロードに成功すれば
	if(Seikou){
		// →ボタン と ←ボタン を有効にする
		r_btn.enabled = true;
		l_btn.enabled = true;
	}
};
// インスタンスに外部テキストをロード
myLV.load("kiso2/data.txt");
//
// →ボタン をクリックしたときの動作を定義
r_btn.onRelease = function() {
	// もし cnt が myLV の n-1 未満であれば
	if (cnt<Number(myLV.n)-1) {
		// cnt の値に 1 を加算
		cnt++;
	} else {
		// それ以外は cnt の値を 0 に戻す
		cnt = 0;
	}
	// load_mc に pic? の ファイルをロード
	load_mc.loadMovie(myLV["pic"+cnt]);
	// my_txt に枚数を表示
	my_txt.text = cnt+1+"/"+Number(myLV.n);
};
// ←ボタン をクリックしたときの動作を定義
l_btn.onRelease = function() {
	// もし cnt が 0 より大きければ
	if (cnt>0) {
		// cnt の値から 1 を減算
		cnt--;
	} else {
		// それ以外は cnt の値を myLV の n-1 にする
		cnt = Number(myLV.n)-1;
	}
	// load_mc に pic? の ファイルをロード
	load_mc.loadMovie(myLV["pic"+cnt]);
	// my_txt に枚数を表示
	my_txt.text = cnt+1+"/"+Number(myLV.n);
};

 ボタンにスクリプトを書くとややこしいので,今回の場合はボタンにインスタンス名を付けて,関連部分はすべてスクリプトレイヤーのフレームに記述しました。
 また,一応外部テキストの文字コードは UTF-8 で保存しています。

 このように, LoadVars を 組み合わせると,外部テキストから Flash にロードするファイルも操作することが可能になります。

 このサイトのフォトアルバムは XML を使用していますが,XMLデータを使わずに,上のような 変数=値 という形のテキストデータを使って LoadVars で読み込んでも作成可能です。
 フォトアルバムの場合は,データが2次元的なものなので XML を使用してみただけです。

 

サンプルダウンロード
PDRファイル・CSFファイル・JPEGファイル在中(少々重いです)
「kiso221.zip」 70.4 KB (72,124 バイト)