FLASHのお勉強 ーアクションスクリプトの実践的事始めー

(4)ムービークリップの開始・停止


 ムービークリップの開始・停止をユーザー(ムービー閲覧者)にゆだねる場合には動作用ボタンが使われる。 今回は、ステージ上にボールが円形を描いて回っているムービーをボタン操作で回転を開始させたり、停止させたりする方法についてのお勉強である。 もちろん、ここで選んだムービーは一例であり、他のいろいろなムービーに共通して使える方法である。

モーショントゥイーンで作成した回転体の場合
 ボールが回転するムービーを以下の要領で作成する
 (1)ステージに楕円ツールでボールを描き配置する(キャンバスサイズ:280*300、12fps)
 (2)ボールをシンボルに変換(ムービークリップ)インスタンスを「ball」とする
(3)インスタンスをダブルクリックして編集画面に入り、ballを選択してシンボルに変換する
(4)変形ツールで基準点を回転時にボールが描く円形の中心にドラッグ&ドロップで移動させる。
(5)FRAME 1 で右クリック「モーショントゥイーンの作成」
(6)FRAME 20 で「キーフレーム挿入」
(7)FRAME10あたりで矢印をクリックし、プロパティーインスペクタの「回転」で、
   時計回り、1回にチェックを入れる
(8)アクションパネルでFRAME 1にstop();(停止状態でムービーを開始させるため)
  FRAME 20に this.gotoAndPlay("1"); を記入(スムーズに回転させるため)

次いで、キャンバス下方に STARTとSTOPの2つのボタンを配置し、シンボルに変換する
ここでのボタンは、矩形ツールで角丸長方形を描き、静止テキストで文字をのせている
 角丸の書き方:矩形ツールアイコンをダブルクリックしてポイント指定する
//STARTボタンのスクリプト
  on(release) {
    _root.ball.play();
  }

//STOPボタンのスクリプト
  on(release) {
    _root.ball.stop();
  }

(注)on(release) はマウスがクリックされて放たれたときの意で、on(press) のクリックされたときよりも感触的にアクションのスタートには向いている。

 _root.ball.play();は、メインのタイムラインに置かれたballというインスタンスの再生を開始せよという意。
 _rootは絶対パスでターゲットを指定するときの元となる。
      
 なお、_root.ball.stop();はplay中のFRAMEでストップする。 初期状態(FRAME1)に戻して止めるときは、_root.ball.gotoAndStop("1"); とする。

アクションスクリプトで作成した回転体の場合

 アクションスクリプトのお勉強の曲線移動で示したように、アクションスクリプトでballを回転させることが出来る。 このアクションは、上の場合と同様なスクリプトでは停止させることが出来ない。 この場合は、モーショントゥイーンのお勉強の回転で示したように、flag(標識)を立ててplay、stopを判断させる必要がある。 上例と同様にキャンバスにボールと2つのボタンを配置し(キャンバスサイズ:280*300、36fps)、以下のようにスクリプトを付記する。
//ボールのスクリプト
 
 onClipEvent(load) {
    kaku=0; }
  onClipEvent(enterFrame) {
    
if (flag==1) {
    this._x=120+75*Math.cos(kaku/30);
    this._y=90+75*Math.sin(kaku/30);
    kaku+=3; }
  }

//STARTボタンに
  on(release) {
    
_root.ball.flag = 1;
  }

//STOPボタンに
  on(release) {
    
_root.ball.flag = 0;
  }

     
 なお、青いボタンは一つのボタンで、再生、停止を切り替える例として示した。
 この場合も、一見一つのボタンに見えるが、START、STOP二つのボタンを重ね合わせている(レイヤーを分けて)。
 それぞれのボタンのスクリプトを以下に示す。
 //STARTボタン;
    on(release) {
      _root.ball.flag = 1;
      mx.behaviors.DepthControl.sendBackward(this);      
// 一つ背面へ
    }

 //STOPボタン;
    on(release) {
      _root.ball.flag = 0;
      mx.behaviors.DepthControl.sendBackward(this);      
// 一つ背面へ
    }


 これは単に、ボタンを重ね合わせて、クリックされるたびに、背面に移動させて切り替えているだけである。
(追記)「上記アクションスクリプトで作成した回転体の場合」のスクリプトは、flagを立てずに以下のように記述してもよいことに気がついたので、記述する。
 ballには記述なし。
 STARTボタンに
  onClipEvent(load) {
   kaku=0; }
  on(release) {
   _root.onEnterFrame=function() {
    _root.ball._x=120+75*Math.cos(kaku/30);
    _root.ball._y=90+75*Math.sin(kaku/30);
    kaku+=3;
    }
  }
STOPボタンに
 on(release) {
  _root.onEnterFrame=function() {
   _root.ball._x+=0;
   _root.ball._y+=0;
  }
 }
 
flashirohaサイト内  Web全体 
HOME   お勉強総リスト