dポイントプレゼントキャンペーン実施中!

 ムービークリップ内のボタン(ボタンは複数存在しています)[プルダウンメニューを作成しました]に対して、
on (release) {
gotoAndPlay("フレーム番号");
}
と記述し、フレーム移動をさせようとしたのですが、
反応がありません。
Flashを使い始めてまだ間もなく、アクションスクリプトも初心者です。
フレームアクションは、キーフレームに設定しないといけないと参考書に書いてあったのですが、そうするとムービークリップ内のボタンには、gotoAndPlayの使用はまちがっているのでしょうか?

フレームアクションではないのですが、同じ部分に
on (release) {
getURL("**.html");
}
と記述すると問題がなく動きます。

過去の質問も読んでみたのですが、どの質問が自分の疑問に当てはまるかよくわかりません。
どなたかご教授願います。

以上の文章で理解しにくければ、追記致します。

A 回答 (2件)

いくつか原因が考えられますが、1番怪しいのは移動先の指定の仕方です。


gotoAndPlay または gotoAndStop で、移動先をフレームの番号で指定する時は、

 gotoAndPlay( 2 );

このように、数字を " " でくくらずに記述します。
" " でくくってもエラーにならないのはなぜかと言いますと。

 gotoAndPlay( "menu_item1" );

このように指定すると、”menu_item1”というフレームラベルを持つフレームに移動、という意味になります。
つまり、" "でくくっても文法上は誤りではないのでエラーにはならないのですが、「 2 」というフレームラベルを持つフレームがない時はフレームの移動が正常に行われません。

Flash MX か MX 2004 をお使いの場合は、フレームを選択した状態で、「プロパティ」パネルを見てください。
左上の方に、<フレームラベル>と書かれている項目があるかと思います。
ここで何か名前を入力すると、選択したフレームに名前が付きます。この名前のことを”フレームラベル”といいます。

フレームラベルは gotoAndPlay や gotoAndStop の移動先として利用できます。
例えばゲームを作っていて、フレーム2からゲームが始まるとします。
フレーム2に”game_start”というフレームラベルを付けると、

 gotoAndPlay( 2 );



 gotoAndPlay( "game_start" );

は、同じ意味になります。
フレームを追加したなどの理由でゲームの始まりがフレーム2からではなくなった場合、フレーム番号を直接指定していた場合は、番号を書き直さなければなりません。
しかし、フレームラベルで指定していれば、フレームが移動しても、そのフレームとともにラベルも移動するので、スクリプトを直さなくても済みます。


もう1つの原因として考えられるのは、ボタンをムービークリップとして作っている場合です。
Flash MX からは、ムービークリップをボタンと同じように使えるようになりました。
が、ボタンとして使っているムービークリップに

 on(release)
 {
  gotoAndPlay( 2 );
 }

というアクションを書くと、ボタン用のムービークリップのフレーム2に移動する、という意味になります。
「プロパティ」パネルで、タイプを確認してみてください。左上の方にリストがありますが、ここが「ボタン」ではなく「ムービークリップ」になっている場合は、

 on(release)
 {
  _parent.gotoAndPlay( 2 );
 }

というように、gotoAndPlay の前に”_parent.”という記述が必要です。


ActionScript を設定できる場所は、

 ・タイムラインのフレーム(キーフレームが必要)
 ・ボタンのインスタンス
 ・ムービークリップのインスタンス

この3箇所です。
フレームに設定するアクションを”フレームアクション”、ボタンやムービークリップのインスタンスに設定するアクションを”オブジェクトアクション”といいます。
gotoAndPlay はフレームを移動するアクションですが、だからといって”フレームアクション”というのではありません。ボタンやムービークリップにも設定できます。
    • good
    • 0
この回答へのお礼

ANo.1の方と同様、非常にわかりやすく、そして
FLASHの基本をお教え頂き、ありがとうございました。

とてもためになりました。
早速勉強し直します。
 本当にありがとうございました。

お礼日時:2004/12/17 22:34

質問者さんと同じようにサンプルを作成しましたが、正しくフレーム移動しますよ!。



私が行なったテストの内容を記述しますね。

 ・タスクバーの「挿入」-「新規シンボル」にてボタンインスタンスを作成する。その中に適当な矩形を挿入する。
 ・上記と同様にムービークリップインスタンスを作成し、その中に作成済みのボタンを挿入する。
 ・ボタンのActionに
on(release) {
_parent.gotoAndPlay(10) ;
}
と記述する。

 ・メインの1フレームに上記のムービーを挿入する。
 ・10フレームに適当な矩形か静止テキストを配置する。


これで、1フレームの矩形(ボタン)をクリックすると10フレームの矩形(静止テキスト)が表現されます。

多分、「_parent」もしくは「_root」を指定されていないのではないですか?。ムービークリップもタイムラインを持っているので、メインのフレームにジャンプさせたいのなら上記の記述が必要です。

試しに、ムービークリップの中の同一フレームに、何か目印になるものを設置してみてください。きっと、設定した目印が表れると思いますよ。
    • good
    • 0
この回答へのお礼

非常にわかりやすい解説ありがとうございました。

早速試してみます!勉強になりました。

お礼日時:2004/12/17 22:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!