WebプログラミングT

 目次へ 前へ 次へ

2007/12/18 久米

5.ActionScriptの応用 データ処理

ボタンMovieClip

ボタンMC

ボタンの機能をMovieClipで実現することは可能です。

  1. MovieClipシンボルのタイムラインに次の3つの名前のフレームを作成。
    _up _over _down
    これらは特殊フレームである。
  2. それぞれのフレーム先頭にstop();を記述。
  3. それぞれのボタン画像を作成。
  4. ルートのフレームアクションにb_mc.onPressやonReleaseなど
    ボタンとしてのイベントスクリプト記述。
    注意)↑ これをしないと動作しない。

MovieClipにすることにより、関数定義などが可能になるのが大きなメリット

5.2 Colorオブジェクト

インスタンスの色をスクリプトから制御するためには、Colorオブジェクトを使用します。

  方法 説明
1

カラーインスタンス=new Color(色を制御したいインスタンス);

Colorオブジェクトインスタンスを生成する。

2 色=カラーインスタンス.getRGB(); 色を制御したいインスタンスの色を取得。
(ただしsetRGBで設定した値しか取得できない。)
3 カラーインスタンス.setRGB(色); 色を制御したいインスタンスの色を設定。
4 色=0xXXXXXX 例0xFF0000 0x669966 setRGB()の括弧中の色は仕様では、16進数で渡します。
0xを数字の先頭に付けると16進数として処理されます。

課題2 まる子七変化を作ってみよ

1)Colorオブジェクトを使用せよ。2)ボタンMovieClipを使用せよ。3)まる子でなくてもよい。

5.3 配列の利用

haba=12;//文字間のピクセル値
moji=" Good Script!";

tA=new Array();
for(var i=0;i<moji.length;i++){
	_root.attachMovie("TrailMC", "t"+i, i);
	tA[i]=eval("t"+i);
	tA[i].tA_txt.text=moji.charAt(i);
}

this.onEnterFrame=function(){
	tA[0]._x=_root._xmouse;
	tA[0]._y=_root._ymouse;
	for(var i=1;i<tA.length;i++){
		tA[i]._x+=(tA[i-1]._x-tA[i]._x+haba)/4;
		tA[i]._y+=(tA[i-1]._y-tA[i]._y)/4;
	}
	updateAfterEvent();
}

あらかじめTextFiledだけのTrailMCをリンケージ登録しておく。
TrailMCのTextFieldインスタンス名をtA_txtとしておく。

 

5.4 描画API

  方法 説明
1

_root.createEmptyMovieClip("インスタンス名", 1);

空のオブジェクトを生成。
描画APIを使う時は、空のオブジェクト生成してそこ描画するのが多い。
attachMovieと似ているが、元となるオブジェクトは不要。
(これをせず、_rootに直接描画も可能)

2 インスタンス.lineStyle(太さ, 色, アルファ);
インスタンス.moveTo(移動先x座標, 移動先y座標);
線のスタイルを決める。
ペンを上げて移動する。
3 インスタンス.lineTo(移動先x座標, 移動先y座標); 今いる位置から移動先まで線を引く。

 

コラム  スクリプトはどこに記述するのが良いか?

  メンテナンス性 部品化により再利用 処理の高速性
メインタイムラインの
フレームアクション

一箇所に記述されているので
× ×
for文何万回などの時
MovieClipの
ムービークリップアクション

×
いろんな場所を見ないといけない
ただし部品化されていればGood

1)本来MovieClipに閉じ込めたように記述し部品化するのが、オブジェクト指向らしいプログラムです。
2)小さなプログラムならメンテナンス性の観点からメインタイムラインに記述するのが良いでしょう。
3)その時でも、 部品化の機会はねらっていましょう。