flash memo

スクリプトで移動〜のときに使うかもなクラス。分割のパラドックスを使った移動( _x += (target – _x) / 2 )などのときに使おうかと。

root に定義するもの

/*--------------------------------------------------*//* moveCheckerClass	@param checkFunc  true だったらその後の動作を終了する	@param mainFunc   実行する関数	@param finishFunc  checkFunc が true のときに実行する関数*//*--------------------------------------------------*/moveCheckerClass = function ( mainFunc, checkFunc ){	this.checkFunc = checkFunc;	this.mainFunc = mainFunc;	this.finishFunc = finishFunc;	this.isMoving = false;};/*--------------------------------------------------*//* start 	動作開始*//*--------------------------------------------------*/moveCheckerClass.prototype.start = function (){	this.isMoving = true;};/*--------------------------------------------------*//* check	メインの動作と、終了チェック。	(onEnterFrame などで呼ぶ。)*//*--------------------------------------------------*/moveCheckerClass.prototype.check = function (){	if ( this.isMoving ) {		// メインの関数実行		this.mainFunc ();				// 終了チェック		if ( this.checkFunc() ) {			this.isMoving = false;			// 終了時に実行			this.finishFunc ();		}	}};

MovieClip に書くもの。(とりあえずびよーん移動なサンプル)。

onClipEvent ( load ){	this.target = 300;	this.v0 = 0;		// チェック関数。 true の時終了	this.checkFunc = function () {		if ( Math.abs( target - _x ) < 0.25 			 && Math.abs( v0 ) < 0.25 ) {			return true;		}		return false;			};	// メインの関数 ( mc を移動 )	this.mainFunc = function () {		var v = (v0 + ( target - _x ) / 10 ) / 1.2 ;		_x += v;		v0 = v;	};		// 終了時の処理	this.finishFunc = function () {		_x = target;	};	// インスタンスを生成	this.moveChecker = new _root.moveCheckerClass( this.mainFunc, this.checkFunc, this.finishFunc );	// 移動スタート	this.moveChecker.start();}onClipEvent ( enterFrame ){	// 移動 & 終了チェック	this.moveChecker.check();}

こうすれば、移動が終了した MovieClip は、計算の部分を実行しないので軽くなる・・・のかなぁ(謎。今 flash 作ってるときにこういうルーチンが多くなったのでクラス化してみたその1。flash 5 でも動くはず(flash MX で flash 5 形式 で吐き出せた)。