onEnterFrameと他イベント連携

onEnterFrameと他のイベントとの連携と、クラスの再利用について。

前回の続きです。

MovieClipサブクラスにマウスイベントを追加する


 class MyClip extends MovieClip{
  function onRelease(){//クリックしたとき実行
  }
  function onRollOver(){//ポインタをあてたとき実行
  }
  function onEnterFrame(){//1秒に1回実行
  }
 }

実装例

onEnterFrameでは「ある条件になったら何もしない」ことにします。
「ある条件」は、MyClipのインスタンス変数に定義しておきます。
マウスイベントで、「ある条件」を変えます。

例:


 class MyClip extends MovieClip{
  var interval = 10; //変化幅
  var __stop = false; //onEnterFrameを止める条件。

  //クリックすると条件を反転
  function onRelease(){
    this.__stop = !this.__stop;
  }

  //ポインタをあてると変化幅を反転
  function onRollOver(){
    this.interval = -this.interval;
  }

  function onEnterFrame(){

    if( this.__stop ) return;//ある条件になったら何もしない
    if( this._alpha < 0 || this._alpha > 100 ){
      this.interval = -this.interval;
    }
    this._alpha += this.interval;
  }
 }

このクラスをリンクしたムービークリップシンボルを数コ配置してみると、

ちょっとだけ条件やいじるプロパティを変えて、いっぱい配置してみると、

などとなります。・・・なんか、田舎の垢抜けないFlash使い、みたいですね。

いや、ここで言いたいのは、

再利用こそオブジェクト指向の醍醐味

シンボルとActionScriptクラスとのリンクは、簡単で強力です。
上のFlashの製作時間は、MyClipクラスを書くのに2分、シンボルを作ってリンクするのに1分、インスタンスをいっぱいコピペするのに1分、など、計5分。オーサリングツールだけで作業していては、なかなかこの素早さは出ません。

作ったMyClipクラスは、どんなムービークリップにもリンクできるので、オリジナルライブラリとして蓄えていけばいいですね。


コメント

コメントしてください

closed.