FLASH では長いムービーを作る時などに場面ごとにタイムラインを区切って管理できる「シーン」という機能があります。一つのシーンだけで長いムービーを作ると延々と右の方に長くなってしまいますが、シーンを作ると区切りでまた1フレームから始める事ができます。
便利ではあるのですが、ムービークリップの中のボタンからは gotoAndStop() を使った特定シーンの何フレーム目へ移動という命令が効きません。これは仕様のようです。
参考:FN0205002 - gotoAndPlay/gotoAndStopでシーンの移動ができない - Flash : テクニカルノート
フレーム移動の gotoAndStop は以下の様な指定ができます。
しかしこの指定は一番外側、すなわち _root のタイムラインでしか効かないのです。
ここで何が困ったかというと、フレームを延々と区切ってサウンドノベルのようなゲームを作るときにセーブ機能を付けようと思った場合です。コンテニューボタンから読んだところまでジャンプ。これが出来ないものですから、困りました。
何か代替策はないか?
上述の参考リンクを読んでいると、以下の様な記述がありました。
いくらシーンが複数あっても、実行されれば一本のタイムラインに結合される。
この点に着目しました。仮にシーンを区切らない場合(シーンを一本のタイムラインに繋げた場合)、何フレーム目という指定をしたらジャンプできるんじゃないかと?そこで以下の用にしてみました。
- セーブボタンには、データを記憶する変数に「_currentframe」で現在のフレーム番号を記憶させます。
- ロードボタンでは、「_currentframe」で得たフレーム番号に gotoAndStop でジャンプ。
これが当たりで、シーン名を指定しなくてもムービークリップ内からフレーム移動する事ができました。