ActionScript の考え方

ActionScript をどうやって組むかなんですが、未だにあっちへフラフラこっちへフラフラの状態が続いております。まあ、焦らなくても Flash MX 2004 のビヘイビアとActionScript 2.0とやらの導入で、またぐっちゃぐちゃになるような気がしますけど。

ここ 2 ヶ月くらいは、ほとんどのコードを _global に書いて、MovieClip には、1,2 行しか書かない方法をとっています(コードは、Meadow で書いてますw)。レイアウトは、flash の画面を見ながらしたいので、MovieClip をリンケージにして registerClass する方法は使っていません。

で、どうやってるかってと、MovieClip から _global にあるメソッドの引数に this を渡して、そのメソッドに勝手にメソッドやプロパティを設定してもらうという感じです。”ワシの機能を実装しとくれ〜” っと MovieClipさんが _global の hogehoge メソッドさんに頼むわけですな。

例えば、_global に以下のスクリプトを書いて、

_global.Ball = new Object();_global.Ball.setMoveBall= function( mc ) {		mc.init = function(){		Ball.init( this );		this.onEnterFrame = this.move;	};	mc.move = function() {		Ball.move( this );	};	mc.init();};_global.Ball.init = function( mc ) {	mc.max = Stage.width;	mc.direction = 1;	mc.velocity = 16;};_global.Ball.move = function( mc ) {	var x = mc._x;	x += mc.velocity * mc.direction;	if( x < 0 &&  mc.direction == -1 ) {		mc.direction = 1;		x = - x;	} else if( x > mc.max &&  mc.direction == 1 ) {		mc.direction = -1;		x = mc.max - ( x - mc.max );	}		mc._x = x;};

MovieClip には、onClipEvent なり、フレームアクションに

onClipEvent ( load ){	Ball.setMoveBall( this );}

と書く感じです。(フレームアクションに書くときは、Ball.setMoveBall が何度も実行されないように細工する必要がありますが。)

ちょっと前までは、普通に MovieClip アクションに上 _global.Ball の中身の (?) メソッドを定義していたんですが、MovieClipの階層が深くなてくると、どこに何を書いたかわけわからなくなってきまして・・・(いや、ヘタレなだけなんですけど)。その点は、この方法でやると、実装する部分がどこいったかわからなくなることはあまり無いし、継承を使って何かする時にも見通しがよくなるかなぁと。

この方法がベストだとは思わないし色々改善したい点もありますが、少なくとも今までよりは楽になった気がします。まぁ MX 2004 までの繋ぎという感じですかねぇ。