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


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

 サンプルの作成などに使用した ParaDraw のバージョンは Ver.0.3a4, Suzuka のバージョンは Ver. 0.8.0.0 [RichEdit版] です。

 

 一見すごそうな ActionScript を使用してそうに見えるでしょう!(でもない?)。
 ところがドッコイ,そうでもありません。
 このサンプルは,イベントハンドラメソッド の1つの簡単な使用例です。

 スクリプトも _root の フレーム1 に,たったこれ↓だけです。

// 座標指定用 crd_mc をフレーム2でストップ
_root.crd_mc.gotoAndStop(2);

// スピードの設定
spd = 1/10;

// 1フレーム進む時間毎に随時実行
_root.pct_mc.onEnterFrame = function() {
	for (i=0; i<=77; i++) {
		// pct_mc内の dot0〜77 の座標を
		// crd_mc内の dot0〜77 の座標に徐々に近付ける
		this["dot"+i]._x += (_root.crd_mc["dot"+i]._x-this["dot"+i]._x)*spd;
		this["dot"+i]._y += (_root.crd_mc["dot"+i]._y-this["dot"+i]._y)*spd;
	}
};

for (i=0; i<=3; i++) {
	// 各ボタンに固有の値 n を設定
	_root["btn"+i].n = i;
	// 各ボタンロールオーバー時の動作定義
	_root["btn"+i].onRollOver = function() {
		_root.crd_mc.gotoAndStop(this.n+2);
	};
	// 各ボタンロールアウト時の動作定義
	_root["btn"+i].onRollOut = function() {
		_root.crd_mc.gotoAndStop(1);
	};
	// 各ボタンドラッグアウト時の動作定義
	_root["btn"+i].onDragOut = _root["btn"+i].onRollOut;
}

 

 イベントハンドラメソッド のスクリプト例より単純です。
 また,これ以外のスクリプトは一切どこにも使用していません。

 スクリプトも簡単であれば原理も簡単です。
 crd_mc というスプライト(MC)の中に dot0〜77 というスプライトをフレームごとに好きなように配置し,
 crd_mc 内のフレームを行ったり来たりさせて,
 pct_mc というスプライト(MC)内に配置した dot0〜77 というスプライトをその座標に近付ける。
 というだけのものです。

 _root のタイムラインは次のようになっています。

Suzuka _rootのタイムライン

 crd_mc というスプライトは,背景画像の下になっていて全く見えていない状態にしています。
 見えている ドット は pct_mc 内に配置した dot0〜77 という 78個 のスプライトです。

 

 pct_mc と crd_mc の中は次のようになっています。

Suzuka スプライト(MC)内のタイムライン

 pct_mc の中にも crd_mc の中にも,dot0〜77 という 78個 のスプライトが入っていて,crd_mc 内の各フレームには,表示させたいように dot0〜77 を配置しています。

 

 そしてスクリプトでは,

 // 1フレーム進む時間毎に随時実行
 _root.pct_mc.onEnterFrame = function() { … };

 によって,pct_mc の中の dot0〜77 を,crd_mc の中の dot0〜77 の座標にひたすら近付けています。

 さらに各ボタン btn0〜3 にロールオーバーしたり,ロールアウトしたりすると,
 crd_mc 内のタイムラインがそれぞれのボタンの指定フレームに行って止まるので,
 pct_mc の中の dot0〜77 が近づく目標座標がその都度変わる。
 というしくみです。

 種を明かせば簡単なことですね(種を考えるのと工作は少し難しいかも...)。

 

 なお,このサンプルでは crd_mc を pct_mc と同じ座標に重ねて置いていますが,各スプライト内の座標はそのスプライトの基準点を 0 としたローカルな相対座標であるため,同じフレームに(同時に)存在するという条件を崩さなければ,全く違う場所に配置してもかまいません。

 また,背景画像によって crd_mc を隠すのではなく,crd_mc のアルファ(不透明度)を 0 にして見えなくしても良いですし,
 _root.crd_mc._visible = false;
 のようにして,非表示にしてもかまいません。

 以上,イベントハンドラメソッド の1つの簡単な使用例と,MovieClip.gotoAndStop() の使い方例でした。

 

 

 

サンプルダウンロード
PDRファイル・CSFファイル在中
「kiso181.zip」 15.4 KB (15,833 バイト)