- ベストアンサー
FLASHの逆転再生を教えてください
過去に質問しましたが、記載の方法が悪かったので もう一度書き換えて質問させてもらいました。 ムービークリップを作成しました。 (約100フレーム) それをステージに配置しました。 配置されたフレームに到達すると、設置された ムービークリップが再生されます。 ※ このムービークリップを 正回転再生したり逆転再生したり操作する方法はあるでしょうか? まだまだ、分かりにくい書き方ですが 私の精一杯の表現方法です。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
前に答えたものです。 よくわかってなくてすみませんでした。 ムービークリップを作られて,そのムービークリップを外から制御するのだったのですね。 まず,そのムービークリップの「プロパティ」でムービークリップに「インスタンス名」を付けてください。 これは,どの方法を取ってもおそらく絶対に必要なことです。 これでムービークリップにオブジェクトとしての名前が付きますから,その名前をターゲットにいろいろ制御すれば良いことになります。 以下サンプルでは,ムービークリップのインスタンス名を「myMovie」としておきます。他の名前でもかまいません。 ここからは色々制御方法があるので,3つほど書いておきます。 1.1つのボタンで逆再生・正再生の切り替 ムービークリップの外にボタンシンボルを作ってください。 そのボタンには以下のようなスクリプトを書きます。 ------------------------------------ on (press) { this.onEnterFrame = function() { _root.myMovie.gotoAndPlay(_root.myMovie._currentframe-2); }; } on (release, dragOut) { this.onEnterFrame = null; } ------------------------------------ 1行ずつ説明すると, on (press)でボタンを押したとき(マウスダウン) onEnterFrameでフレームレート毎に1回{}内の計算をする。 myMovieに対し,そのmyMovieが再生されているフレームより2フレーム前に戻して,Play。 on (release, dragOut)でマウスを上げるかマウスが外にズレたとき onEnterFrame = null この計算を終わらせる。 ということです。 このボタン1つで,マウスダウンで逆再生,マウスアップで正再生切り替えボタンになります。 2.正・逆再生用ボタンを別に用意する場合 2つのボタンを使って,逆生成・正再生を切り替える場合は, 1つの逆再生用ボタンに ----------------------------------- on (release) { this.onEnterFrame = function() { _root.myMovie.gotoAndStop(_root.myMovie._currentframe-1); }; } ----------------------------------- 正再生用ボタンに ----------------------------------- on (release) { this.onEnterFrame = null; _root.myMovie.play(); } ----------------------------------- と書けばmyMovieはスタートします。 3.100フレームまで来ると自動で逆再生する場合 ボタンではなく,100フレームまで到達したあと,自動でムービークリップを逆再生したい場合は,もう1つムービークリップを作ってください。 そのムービークリップからmyMovieを制御します。 もう1つムービークリップを作って,そのムービークリップに ---------------------------------- onClipEvent (load) { this.onEnterFrame = function() { I = _root.myMovie._currentframe; if (I == 100) { Flg = 1; } if (Flg == 1) { _root.myMovie.gotoAndStop(_root.myMovie._currentframe-1); } }; } --------------------------------- と書けば,myMovieが100フレームに達したときFlg(フラグ)に1が入り, フラグに1が入ったら逆再生するというものになります。 答えられるかどうかは自信がありませんが,まだ勘違いをしていましたら,おっしゃってください。 "わかる範囲"で回答します。
その他の回答 (1)
#1で答えた者です。たびたびすみません。 ひょっとして, そのムービークリップは,100フレームまで行ったら,逆再生。 1フレームまで戻ったら,正再生。 また100フレームまで行ったら,逆再生。 また1フレームまで戻ったら,正再生。 ……… を繰り返すのでしょうか? その場合,#1の回答の3つ目の例の変形でできます。 おっしゃっている100フレームあるムービークリップのインスタンス名を仮に「myMovie」とします。 そして"別の"ムービークリップを作り,その別のムービークリップに, ------------------------------------ onClipEvent (load) { Flg = 0; this.onEnterFrame = function() { I = _root.myMovie._currentframe; if (I == 100) { Flg = 1; } else if (I == 1) { Flg = 2; } if (Flg == 1) { _root.myMovie.gotoAndStop(I - 1); } else if (Flg == 2) { _root.myMovie.play(); } }; } ------------------------------------ と書きます。これで,この別のムービークリップから100フレームある「myMovie」に, 行ったり来たりする命令が発せられます。 せっかく,変数I = _root.myMovie._currentframe; でIを作っているのにIを有効利用してなかったのと, Flgを念のため初期化していなかったので,#1の例3を一部変更しています。 別に#1の例3のままでも,問題は起こらないと思います。 あと#1で言い忘れていますが,このスクリプト入りのムービークリップは,ステージ外の見えないところ(グレーのエリア)に作ってください。 ステージ内(デフォルトでは白いエリア)でも良いですが,その場合は透明(アルファ0)で見えないムービークリップにしてください。 見えてもじゃまになるだけで無意味だと思います。
お礼
親切ご丁寧に回答をありがとうございました。 理解できました! (というか、丸写しですけど・・・) トントンと作成にかかることができ 大変嬉しく思ってます。 ありがとうございました。 追伸:ドコでそういう勉強できるのでしょうか