サンプルスクリプトの解説

サンプルの "zapper.swf" ファイルでは、ユーザーがテントウムシをコンセントにドラッグすると、テントウムシは落ち、コンセントは震えます。メインタイムラインにはフレームが 1 つだけあり、その中にはテントウムシ、コンセント、およびリセットボタンという 3 つのオブジェクトがあります。各オブジェクトはムービークリップインスタンスです。

次のスクリプトは、メインタイムラインのフレーム 1 にアタッチされます。

var initx:Number = bug_mc._x;
var inity:Number = bug_mc._y;
var zapped:Boolean = false;

reset_btn.onRelease = function() {
    zapped = false;
    bug_mc._x = initx; 
    bug_mc._y = inity;
    bug_mc._alpha = 100;
    bug_mc._rotation = 0;
};

bug_mc.onPress = function() {
    this.startDrag();
};
bug_mc.onRelease = function() {
    this.stopDrag();
};
bug_mc.onEnterFrame = function() {
    if (this.hitTest(this._parent.zapper_mc)) {
        this.stopDrag();
        zapped = true;
        bug_mc._alpha = 75;
        bug_mc._rotation = 20;
        this._parent.zapper_mc.play();
    }
    if (zapped) {
        bug_mc._y += 25;
    }
};

テントウムシのインスタンス名は bug_mc であり、コンセントのインスタンス名は zapper_mc です。スクリプトで bug インスタンスが this と表されているのは、このスクリプトは bug インスタンスに割り当てられたものであり、予約語 this が bug インスタンスを含むオブジェクトという意味を表すからです。

イベントハンドラには、異なるイベントを扱う onRelease()onPress()、および onEnterFrame() があります。これらのイベントハンドラは、SWF ファイルのロード後にフレーム 1 上で定義されます。再生ヘッドがフレームに入るたびに、onEnterFrame() イベントハンドラ内のアクションが実行されます。1 フレームの SWF ファイルであっても、再生ヘッドは繰り返しそのフレーム内に移動し、スクリプトは繰り返し実行されます。

2 つの変数 initxinity は、bug_mc ムービークリップインスタンスの最初の x 座標および y 座標をそれぞれ格納するよう定義されています。また、関数が定義され、reset_btn インスタンスの onRelease イベントハンドラに割り当てられています。この関数は、reset_btn ボタン上でマウスボタンがクリックされて離されるたびに呼び出されます。この関数によって、テントウムシがステージ上の最初の位置に戻り、回転値とアルファ値がリセットされ、zapped 変数が false にリセットされます。

if 条件ステートメントでは、hitTest() メソッドを使用して、テントウムシのインスタンスがコンセントのインスタンス (this._parent.zapper_mc) に触れているかどうかをチェックします。評価の結果には、truefalse があります。

bug_mc インスタンス上でマウスボタンを押すと、onPress() ステートメント内のアクションが実行されます。bug_mc インスタンス上でマウスボタンを離すと、onRelease() ステートメント内のアクションが実行されます。

startDrag() アクションで、テントウムシのドラッグを実現します。スクリプトが bug_mc インスタンスに割り当てられているので、キーワード this は、bug インスタンスがドラッグ可能であることを示しています。

bug_mc.onPress = function() {
    this.startDrag();
};

stopDrag() では、ドラッグの動作を停止します。

bug_mc.onRelease = function() {
    this.stopDrag();
};


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001022.html