プロが教える店舗&オフィスのセキュリティ対策術

「stop」や「play」以外に、押していると巻き戻されるボタンの作成方法(式)を教えていただきたいと思い投稿しました。
どうぞ宜しく御願いします。

A 回答 (2件)

再生するフレームを独自の変数で管理し、「巻き戻し」ボタンが押されている間 -1 して、そのフレームに gotoAndPlay でジャンプする、という方法はいかがでしょう。


ムービークリップの再生ヘッドの位置、つまり現在再生されているフレームは、MovieClip クラス( Flash MX 以前はオブジェクト) _currentframe というプロパティに保存されています。
Flash ではムービー自身もムービークリップとして扱いますので、メインの再生ヘッドの位置は _root._currentframe を見れば分かります。
「巻き戻し」ボタンが押された時に _currentframe プロパティから現在の再生ヘッドの位置を取得し、ボタンが押されている間はここから連続的に -1 していき、再生するフレームを決めます。


ボタンが押されている間、何かをするには、ボタンが押されているかどうかの情報が必要です。
これは、変数を1つ用意して、ボタンが押された時( press イベント発生時)に true 、離された時( release および releaseOutside イベント発生時)に false にしておくことで管理できます。
この変数を、ムービークリップのイベント enterFrame で監視し、true の時だけ巻き戻しの処理を実行します。

Flash MX 以降は、ムービークリップでもボタンと同様のイベントが利用できるようになりました。
「巻き戻し」ボタンをムービークリップとして作ると、ボタンが押されている間だけ巻き戻す処理や変数のターゲットパス等も1つのムービークリップにまとめることができます。

スクリプトにしてみますと、大体、次のようになるかと思います。
このスクリプトは「巻き戻し」ボタンとして使うムービークリップに設定してください。
(↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)


 //初期設定
 onClipEvent(load)
 {
  //巻き戻しフラグ
  //逆再生時true、それ以外はfalse
  reverse_flg = false;

  //逆再生時の再生フレームを管理
  frame_no = 1;
 }


 on(press)
 {
  //逆再生開始
  reverse_flg = true;

  //現在の再生ヘッドの位置を、逆再生の初期値として設定
  frame_no = _root._currentframe;
 }

 on(release , releaseOutside)
 {
  //逆再生を終了
  reverse_flg = false;
 }


 onClipEvent(enterFrame)
 {
  //ボタンが押されている場合のみ、逆再生
  if( reverse_flg )
  {
   //再生するフレームを1つずつ戻す
   frame_no--;
   if( frame_no <= 0 )
   {
    frame_no = 1;
   }

   //指定のフレームを再生
   _root.gotoAndPlay( frame_no );
  }
 }

Flash 5 ではムービークリップでは press や release イベントが使えませんので、ムービークリップの内部に透明なボタンを配置し、こちらに on アクションを設定してください。


ざっと試したところ、トゥイーンはモーション/シェイプともに問題なく逆再生は可能のようです。
ただし、複数のフレームからできているムービークリップのタイムラインまでは巻き戻せません。
まあ、ものすごく強引なやり方をすれば制御できないこともないとは思いますが、ムービークリップのタイムラインは使わず、メインのタイムラインだけで動きをつけた方が無難だと思います。
    • good
    • 0
この回答へのお礼

アクションスクリプトの参考書を何冊か買っていたのですが、
掲載されてなかったので質問させていただきました。
どうも有難う御座います。
とても勉強になりました!!!

お礼日時:2005/04/12 16:19

ぱっと思いついた方法です。



まず逆再生用のボタンをボタンオブジェクトとして作ります(作ってあると思います)。

それをムービークリップにします。
そのムービークリップを3フレーム2レイヤーにします。

ボタンの入っているレイヤーはそのままで,
ボタンの入っていない方のレイヤーの1フレーム目に
-------------------------------
stop();
-------------------------------
を書きます。これで,このボタンの入ったムービークリップが自動再生されることはありません。

同じレイヤーの3フレーム目(3フレームしか作っていないので最後のフレーム)を
キーフレームにして,そのフレームに
-------------------------------
gotoAndPlay(2);
_root.prevFrame();
-------------------------------
を書きます。このムービークリップを2フレームの戻し,
_root(メインのアニメーション)を前のフレームに戻します。

最初に作ったボタンに
-------------------------------
on (press) {
play();
}
on (release, rollOut, dragOut) {
gotoAndStop(1);
_root.play();
}
-------------------------------
と書きます。
このマウスダウンでムービークリップは再生しだし
マウスアップもしくはロールアウトもしくはドラッグアウトで
このムービークリップは1フレームに戻りStop。
同時に_rootのアニメーションも再生しだす。

というものです。

ムービークリップを利用した単純なスクリプトばかりす。
他にももっと良い方法はあるかもしれません。
    • good
    • 0
この回答へのお礼

有難う御座います。
教えていただいた考え方で是非やってみます。

お礼日時:2005/04/11 22:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!