- ベストアンサー
シーン逆再生から再生
A、B、・・・ボタン シーンaa、シーンbb、シーンcc、・・・ があり Aボタンを押すとシーンaaが再生され、ストップ Bボタンを押すとシーンaaが逆再生されてからシーンcc後シーンbbに という風に動く式だとどうなるでしょうか? シーンではなく、外部swfでも逆再生できるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
シーンというのは,Flashでいう「シーン 1」「シーン 2」… のシーンのことですよね。 最初に「シーン 1」が出てきて,そこに「Aボタン」,「Bボタン」があると想定して書きます。 また,シーンbb=「シーン 2」,シーンcc=「シーン 3」 として回答します。 質問されてる内容を,それだけをするなら,単純に, 「シーン 1」の1フレームに stop(); 「Aボタン」に on (release) { play(); } 「シーン 1」の最終フレームをキーフレームにして stop(); とし, 「Bボタン」に on (release) { gotoAndStop(「シーン 1」の最終フレーム数); this.onEnterFrame = function() { gotoAndStop(this._currentframe - 1); if (this._currentframe == 1) { gotoAndPlay("シーン 3", 1); this.onEnterFrame = null; } }; } 「シーン 3」の1フレーム目に play(); 「シーン 3」の最終フレームに gotoAndPlay("シーン 2", 1); 「シーン 2」の最終フレームに stop(); と書けば良いです。 ---------------------------------------- もっとさらにボタンが増えて,それぞれのボタンをクリックしたら,それぞれ別の再生のしかたをする場合は 「シーン 1」の1フレームに if (flag == "B") { gotoAndPlay("シーン 3", 1); } else { stop(); } 「Aボタン」に on (release) { flag = "A"; play(); } 「シーン 1」の最終フレームをキーフレームにして if (flag == "A") { stop(); } とし, 「Bボタン」に on (release) { flag = "B"; gotoAndStop(「シーン 1」の最終フレーム数); this.onEnterFrame = function() { gotoAndStop(this._currentframe - 1); if (this._currentframe == 1) { this.onEnterFrame = null; } }; } 「シーン 3」の最終フレームに if (flag == "B") { gotoAndPlay("シーン 2", 1); } 「シーン 2」の最終フレームに if (flag == "B") { stop(); } というふうに変数flagを作り,ボタンにそれぞれのフラグを立てさせて,そのフラグの値によって, フレームのスクリプトを変えるのが楽だと思います。 --------------------------------------- >> シーンではなく、外部swfでも逆再生できるのでしょうか? できます。 外部swfを読み込んだムービークリップに,進み方を命令すれば良いだけです。 例として今作った,フラグ入りのSWFを仮に「001.swf」とし,それを読み込むSWFを作ります。 新しいムービーに「AAA」というインスタンス名のムービークリップを作り, 1フレーム目には, loadMovie("001.swf", "AAA"); と書いて,「001.swf」を「AAA」に読み込ませます。 それを動かすためのボタンを作り,そのボタンに, on (release) { _root.AAA.flag = "B" _root.AAA.gotoAndStop(「シーン 1」の最終フレーム数); this.onEnterFrame = function() { _root.AAA.gotoAndStop(_root.AAA._currentframe-1); if (_root.AAA._currentframe == 1) { _root.AAA.gotoAndPlay(***注意***); this.onEnterFrame = null; } }; } と書けば,ロードしたムービーを制御できます。 ロードしたムービーのコントロールと前のコントロールの書き方の違いは, ターゲットのパスを,ムービークリップのインスタンス名にするところが違うのと, _root.AAA.gotoAndPlay(***注意***); の部分です。 この「***注意***」の部分は「シーン 1」から数えた総フレーム数で書くと指定のシーンにジャンプできます。 例えば「シーン 1」が20フレーム,「シーン 2」が30フレームあったとして, 「シーン 3」の1フレームにジャンプしたい場合は,ココの数字を, 20+30+1=51で, _root.AAA.gotoAndPlay(51); としてください。 内容はすごく簡単なことなのですが,説明がややこしくなってしまいすみません。
お礼
sassakunさん 丁寧にお答えいただいてありがとうございました。 外部swfでも上手く動かすことが出来ました。 自分でかいたスクリプトだと_currentframeのとり方とかがおかしかったようです。 回答有難うございました。