• ベストアンサー

シーンの切り替え方法

現在、仕事でFlashを制作しているんですが シーン1でボタンをクリックすると、次のシーンに飛んで再生が始まるようにしたいのですがうまくいきません。 現在、シーン1のボタンに on (release) { gotoAndPlay("シーン2”); } と入れているんですがなかなかボタンをクリックしても反応がありません。 Flash初心者なのですいませんが解決方法を教えて下さい。 よろしくお願い致します。

  • Flash
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

ステージに置いてあるボタンシンボルのインスタンスでしたら、  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点を確認してみてください。

hiro926
質問者

補足

回答ありがとうございます。 実際やってみたのですが、上手く行きません。 最後にありました、  ・シーン名やフレームラベルに誤りはないか  ・gotoAnd*** を実行する階層が、シーンの移動を利用できる階層かどうか を確認したいと思いますが、実行できる階層とはどうゆういみでしょうか? もしよろしかったら教えて下さい。 また、どうして上手く行かないのか他にヒントがあればお願いします。

その他の回答 (1)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

ヒントは#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 では重要なポイントであり基本でもあります。 入門書等にも必ず書かれていますから、納得するまで研究してください。

hiro926
質問者

お礼

回答ありがとうございました。 親切に教えて頂きまして、大変参考になりました。 頂いた回答を参考に研究していきたいと思います。 ありがとうございました。

関連するQ&A

  • 初歩的ですみません。シーンについて。

    こんばんわ。 FLASH暦はそこそこなのですが、AS暦はゼロに等しいです>< FLASHの中にA,B,の2つのボタンがあります。 Aを押したら、シーン2に飛ぶようにして Bを押したら、シーン3に飛ぶようにしたいのですが、 下記の通り打ち込んでもうまくいきませんでした。 Aのシンボル(ボタン)に on(release){ gotoAndPlay("シーン2","1"); } と、打ち込んでも、なんだか、うまくいきませんでした。。。 on (release) { nextScene(); } と打ち込むと、シーン2には飛ぶのですが、そうすると、シーン1にボタンがひとつしか作れなくなります。。。 ※2つともスクリプトエラーはでませんでした。 つまり、シーン1からシーン3に飛ぶ手段がなくなると思います。。。 どなたか、解決方法をよろしくお願いします。

    • ベストアンサー
    • Flash
  • gotoAndPlayでシーンの移動

    初心者ですが、よろしくお願いします。 Windows XP / FLASH MXを使用しています。 シーン2に配置してあるボタンをクリックするとシーン1に配置しているMC内にあるフレームラベルへ移動させたいです。 ボタンに下記のように記述してみましたがうまくいきません。 on (release) { _root.movie_mc.gotoAndPlay("menutop"); } ご存知の方いらっしゃいましたら、よろしくお願いいたします。

  • ボタンのアクションについて

    flashの初心者です。 シーン1とシーン2を作り、シーン2の中に、文字&ボタンインスタントを一つのフレームに入れ、モーショントゥイーンをかけました。 そして、その中のボタンインスタントにアクションを入れました。 on (release) {gotoAndPlay(350);} ボタンを押し話したときに、350(シーン2)のフレームへ飛んで再生するように設定しました。 しかし、ちゃんと作動してくれません。 シーン2の205からスタートしてしまいます。 シーン1はフレーム数は145まで入ってます。 よく見ると、この145と205を足すと350になります。 つまり、シーン1からシーン2にかけて350番目と言う様になってしまいます。 だから、アクションを on (release) {gotoAndPlay(495);} にすると、きちんと動いてくれます。 シーンを分けているときは、こう言うように足さないといけないのでしょうか? シーン2の350と言うように設定はできないのでしょうか? on (release) {gotoAndPlay("シーン2"350);} では出来ませんでした。 モーショントゥイーンをかけていない、普通のボタンは、普通に設定(145を足さない)でうまく動いてくれます。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • シーンからムービクリップ内のラベルへ移動

    Flash8でWEBサイトを制作中です。 大本のシーン1があり、そこにはボタンとムービークリップAを配置してあります。 そしてそのムービークリップA内のタイムラインにはラベル1があります。 そのラベル1に、シーン1のボタンから移動したいのですが、うまくいきません。 ムービークリップA内のボタンからシーン1のラベルへの移動はできるのですが、つまりその逆ができないかと頭を悩ませています。 シーン1にあるボタンには on (release) { this.gotoAndPlay("ラベル1"); } のアクションスクリプトを入れています。 他にも on (release) { _parent.gotoAndPlay("ラベル1"); } 等を入れてみましたが、全く反応しません。 大変困っています。どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • flashのMCの中にMCを入れてその中のボタンでシーンを移動したいのですができません

    flashの シーン1で大元になる5つのMCで構成された大元のMCにはonClipEvent (enterFrame)のスクリプトを記述しています。 その5つのMCの中、それぞれに、ボタンがあります。そのボタンはシーン1からシーン2に飛ばすアクションをつけているのですが、まったく反応しません。 なぜか、同一シーンのフレーム移動は反応するのですが。ボタンの記述は下記です。 on (release) { _parent._parent.gotoAndPlay("work", 1);

    • ベストアンサー
    • Flash
  • Flash、ボタンが動かない!?

    Flashでコンテンツ制作中です。 ボタンが思うとおりに動きません。 まず、シーン1上に、レイヤー10枚400フレームほどでアニメーションを作っています。 まずは、あるボタンをクリックすると、他のフレームに移動するように作っています(移動はすべてフレームラベルをつけて移動しています)。 移動先はアニメーションなのでシンボルでアニメーションクリップ化しています。 そのアニメーションクリップはいくつかのボタンの集合体です。ボタンをクリックするとまた別のフレームに飛ばしたいのですが、うまく出来ません。 ボタン自体が動いていないわけではありませんでした。 on (release) {getURL("http://www.~~/");}にするとちゃんとページを表示します。 on (release) {gotoAndPlay("main");}とすると移動しません。 on (release) {gotoAndPlay("シーン 1", "main");} でもダメでした。 ラベルのスペル間違えではないとした場合、他に何かダメな理由が考えられることはありますか? よろしくお願いします。

  • Flash8でシーン移動ができない

    Flash8Basicを利用しています。 初歩的な質問で恐縮なのですがシーンの移動ができなくて困っています。過去ログを検索して色々試してみましたがどうしてもうまくいきません・・・。 シーン2に配置したボタンをクリックするとシーン2から「design」というシーンの「s3」というフレームに飛ぶようにしたいのです。 シーン「design」は挿入から作成したものです。 ボタンをrootに配置し、ボタンにアクション  on (release) { gotoAndPlay("design","s3");  } と記載しています。 どなたかアドバイスよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASHでSKIPさせるときのAS表記について

    今回フラッシュで初めて、skipボタンを作成しました。 アクションスクリプトの設定で on (release) { gotoAndPlay("scene5",1); } では普通に動作するのですが、 on (release) { gotoAndPlay("scene5"); } ではうまく作動しませんでした。 前任者が以前に作ったものでは 後者の表記の仕方(シーン名のみの表記)でボタンがうまく作動していたので、 今回自分の作ったものでうまくいかない理由が知りたいです。 関係ありそうな詳細を以下に書きます。 ・scene1~scene5の5シーンで構成 ・ボタンは透明ボタンとして作成 ・scene5は2フレームで、2フレーム目で停止するように「stop();」を入れています。 どうぞよろしくお願いします。

  • flash cs3のアクションスクリプトに関する質問です。

    flash cs3のアクションスクリプトに関する質問です。 ActionScript2.0を使っています。 現在ゲームを作っていますが次の場面で分からないことがあります。 3つの項目からそれぞれ1つずつ答えを選んでもらい「決定」のボタンを押すと答えによって次に再生するレイヤーを変えたいのですがうまくいきません。 具体的には 【A】【1】【あ】 【B】【2】【い】 【C】【3】【う】 【決定】 というボタンがあり、例えば【A】【1】【あ】と選んで【決定】を押すと、「レイヤーA」「レイヤー1」「レイヤーあ」が再生されるようにしたいのですが 【A】のボタンのアクションには on (release) {a=1} と書きました 上と同様にほかの【B】は{a=2}、【C】は{a=3}、【1】から【3】の項目については{b=1}のように【あ】の項目についても{c=} 【決定】のボタンのアクションには on (release) { if (a==1) {gotoAndPlay(フレーム1の名前); } ~同様にそれぞれ(a==2)以下が続きます。~ } と書きました。 シンタックスチェックでは間違いは見つかりませんでしたがシーンプレビューでは決定ボタンを押しても反応がありません。 はじめたばかりで何かが足りていないのか、根本的に間違っているのかもわからない状態です。 回答よろしくお願いします。 上記のこと以外で伝えたほうがいいことがありましたら教えてください。

  • シーン上のボタンのscriptでエラー

    flash cs3を使ってホームページの素材を作っています。 シーン上で文字がトウィーンで動いた後、 ボタンが現れボタンをクリックするとページに飛ぶように作りたいのですが、 このボタンに on (release) { getURL("http://www.1art.jp/le.htm"); } (内のURLは例です) というscriptを入れているのですが プログラムの末尾の後に余分な文字が見つかりました。on (release) { というエラーが表示されてしまい、 普通にシーンにかけているstopも効かなくなってしまいます。 どこに問題があるのでしょうか? ちなみに文字が動くムービーも、ボタンも同一シーン上にあります。 ググりましたがスクリプト自体は間違っていないようです。 すみませんがどなたか教えてください。

専門家に質問してみよう