- ベストアンサー
シーンの切り替え方法
現在、仕事でFlashを制作しているんですが シーン1でボタンをクリックすると、次のシーンに飛んで再生が始まるようにしたいのですがうまくいきません。 現在、シーン1のボタンに on (release) { gotoAndPlay("シーン2”); } と入れているんですがなかなかボタンをクリックしても反応がありません。 Flash初心者なのですいませんが解決方法を教えて下さい。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ステージに置いてあるボタンシンボルのインスタンスでしたら、 on(release) { gotoAndPlay( "シーン 2" , 1 ); } (↑コピーする際は、各行頭の全角のスペースを、全て半角のスペースかタブに置き換えてください。このまま使うとシンタックスエラーになります) で、いかがでしょう。 -------------------- シーンを指定する gotoAndPlay は、メインのタイムラインのフレームか、ステージに置いたボタンシンボルのインスタンスでしか利用できません。 gotoAndPlay には2種類あり、1つは冒頭のスクリプトで使ったように、シーンとフレームの両方を指定できるものです。 もう1つは、ムービークリップを制御するために作られた、MovieClip クラス( Flash MX 以前の場合はオブジェクト)と呼ばれるオブジェクトが持っている機能の1つです。 やはりフレームを移動する命令なのですが、こちらはフレームの番号またはフレームラベルしか指定できません。 ムービークリップにもタイムラインはありますが、シーンの概念はメインのタイムラインにしかありません。そのため、MovieClip クラスが持っている方の gotoAndPlay ではシーンの指定ができない設計になっています。 シーンを移動するためのボタンが、ボタンシンボルのインスタンスではなくムービークリップのインスタンスだったり、ムービークリップの中に含まれているボタンなどの場合は、シーンの指定は利用できません。 この場合は、フレームラベルを使い、MovieClip クラスが持っている方の gotoAndPlay を利用してください。 ムービークリップの中にあるボタンで、フレームラベルを使ってシーン間を移動する方法は、以前、別の質問でご紹介しましたので、よろしければご参照ください。 ・プルダウンメニューでシーンの移動? http://okweb.jp/kotaeru.php3?q=1164289 移動先を1つだけ指定すると、どちらの gotoAndPlay であっても、これは移動するフレームの指定と見なされます。 移動先にはフレームラベルも利用できますので、 gotoAndPlay( "シーン2" ); と書くと、”シーン2”というラベルの付いたフレームに移動する、との意味になります。 シーン名を指定して移動する場合は、必ず、シーンの名前とフレームの番号(またはフレームラベル)の両方を指定します。 フレームを移動するアクション( gotoAndPlay または gotoAndStop )で、存在しないシーンやフレームを指定すると、エラーにはならないもののフレームの移動が正常に行われません。 挿入したシーンには、仮の名前が付いています。 この名前が実はクセモノで、”シーン 2”というように、”シーン”と番号の間に半角のスペースが入っています。 また、番号は半角の数字です。 全角半角の誤りやスペースの抜けなど、意外に間違えやすい名前になっていますので、ご注意ください。 なお、シーンには任意の名前を付けることができます。 「ウィンドウ」→「シーン」( MX 2004 をお使いの場合は「ウィンドウ」→「デザインパネル」→「シーン」)で、シーンを管理するパネルが開きます。 名前を変更したいシーンの名前をダブルクリックすると、シーン名を変更できます。 「シーン」パネルでは、名前の変更のほかに、再生する順序の変更・シーンの追加・複製・削除も可能です。 gotoAnd*** でシーンを移動する際、うまく動かない時は、 ・シーン名やフレームラベルに誤りはないか ・gotoAnd*** を実行する階層が、シーンの移動を利用できる階層かどうか この2点を確認してみてください。
その他の回答 (1)
- DPE
- ベストアンサー率85% (666/776)
ヒントは#1に書いたことで全部なのですが... 階層の確認とは、要するに、移動に使うボタンが、ステージに直接配置されているものかどうかです。 このボタンがムービークリップになっていたり、何かのムービークリップに含まれているボタンでないかどうかをご確認ください。 Flash MX 以降をお使いの場合は、ボタンを選択した状態で「プロパティ」パネルを見てください。通常はステージの下にドッキングされています。 パネルの左上に、選択した対象の種類が書かれています。例えば、タイムラインのフレームを選択している時は”フレーム”、ボタンを選択した時は”ボタン”と表示されます。 まず、これが”ボタン”と表示されているかどうかをご確認ください。 #1でも書きました通り、シーン名を指定できる gotoAndPlay は、メインのタイムライン(ムービーそのもののタイムライン)のフレームか、ステージに直接配置されているボタンシンボルのインスタンスでしか利用できません。 ここが、もしも”ムービークリップ”になっているようであれば、#1でご紹介した書き方ではシーンを移動できません。 タイプが”ボタン”になっているにも関わらず移動できなかった場合は、シーンの名前とフレームの番号をご確認ください。 #1でも書きました通り、最初から付いているシーンの名前は、”シーン”と番号の間に半角のスペースが入っていたり、数字が半角になっていたりと間違えやすいものです。 「シーン」パネルで、予め分かりやすい名前に変更しておくと、間違いも少なくなります。 また、フレームの番号( gotoAndPlay に続く ( ) の中の、右側のパラメータ)は半角の数字で指定し、" " でくくらずに書きます。 タイプが”ムービークリップ”になっている場合は、シーンを指定しての移動ができません。 この場合は、シーン2の最初のフレームにフレームラベルを付けることで対応できます。 まず、シーン2の最初のフレームにラベルを付けます。 ステージの右上に並んだ2つのアイコンの、左側のアイコンをクリックすると、編集するシーンを切り替えることができます。 編集しているシーンがどれであるかは、ステージの上の方に書かれていますので、「シーン2」(シーン名を変更した場合はその名前)になっているかどうかを確認してください。 シーン2のフレーム1を選択して、先ほどと同じく「プロパティ」パネルを見てください。左上の方に、「フレーム」と表示されているかと思います。 そのすぐ下に、<フレームラベル>という仮の文字列が入っている項目があります。ここに、何か分かりやすい名前を入力してください。入力した名前が、フレームの名前(フレームラベル)となります。 ここでは仮に、”main”という名前を入れたとします。 編集するシーンをシーン1に戻し、シーンの移動用に使うムービークリップを選択して、次のようなスクリプトを設定します。 on(release) { _root.gotoAndPlay( "main" ); } (↑コピーする場合は各行頭の全角のスペースにご注意ください) ------------------ Flash には階層という考え方があります。 イメージとしては、入れ子になった箱や、パソコンでフォルダの中に更にフォルダを作ってファイルを管理できるのと同じです。 一番外側の箱、つまり最も上に位置する階層はムービー自身です。 Flash では、ムービー自身も1つのムービークリップとして扱い、通常は _root という名前で指定できます。 例えば、ステージにボタンの btn とムービークリップ clip という2つのインスタンスが並んでいるとします。 btn は _root の中に何の箱にも入っていない状態で入っていますが、clip は、_root の箱の中にもう1つ、clip という名前の箱が用意されているようなものです。 今回は詳しくは考えませんが、clip も箱である以上、この中に他のムービークリップやボタンを入れることができます。 シーンは _root にしかないため、clip はシーンの概念がありません。 しかし、_root と clip の両方に共通する概念として、フレームラベルがあります。 また、_root も clip も、同じくフレームの番号やフレームラベルを指定して移動できる gotoAndPlay という機能を持っています。 そこで clip では、_root の持っている gotoAndPlay を使わせてもらい、_root のフレームラベルを指定する事で、擬似的にシーンの移動を実現するという形になります。 なお、btn についても考えますと。 btn が存在している _root にはシーンの概念がありますから、シーンを指定する gotoAndPlay が利用できます。 もちろん、clip と同様に _root.gotoAndPlay( "main" ); としても、同じ効果になります。 階層の概念や指定は、他のムービークリップやボタンを細かく操作したり、変数や関数を呼び出す際にも必要になる、ActionScript では重要なポイントであり基本でもあります。 入門書等にも必ず書かれていますから、納得するまで研究してください。
お礼
回答ありがとうございました。 親切に教えて頂きまして、大変参考になりました。 頂いた回答を参考に研究していきたいと思います。 ありがとうございました。
補足
回答ありがとうございます。 実際やってみたのですが、上手く行きません。 最後にありました、 ・シーン名やフレームラベルに誤りはないか ・gotoAnd*** を実行する階層が、シーンの移動を利用できる階層かどうか を確認したいと思いますが、実行できる階層とはどうゆういみでしょうか? もしよろしかったら教えて下さい。 また、どうして上手く行かないのか他にヒントがあればお願いします。