• ベストアンサー
  • すぐに回答を!

外部swf(子swf)から、親swfの特定「シーン/フレーム」にリンクをしたい。

  • 質問No.2852036
  • 閲覧数519
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 50% (1/2)

アクションスクリプト初心者です。お力をお貸し下さい、どうぞよろしくお願いいたします。

「親swf」ファイルに、「子swf」ファイルを読み込み、「子swf」のリンクボタンから
「親swf」ファイルの指定「シーン/フレーム」にリンクをしたいのですが上手くいきません。

「親」ファイルのタイムライン上に配置した「ムービークリップ(インスタンス名:tv)」を
外部swf「子swf」に差し替えるスクリプトは

----------

loadMovie("子swf", "tv");
stop();

----------

と、記述して上手く動いてますが、

「子swf」のリンクボタンから「親swf」の指定「シーン/フレーム」にリンクさせるにはどの様なスクリプトを書けば良いのか?アドバイスをお願いいたします。

※「親swf」の指定「シーン/フレーム」とは、「子swf」を読み込む前の「シーン/フレーム」
に戻したいのです。

感覚として下記のようなスクリプトを書きましたが、「親swf」の最初のシーン/フレームに
戻ってしまいます。

リンクボタンに記述
----------

on (release) {
loadMovieNum("親swf", 0);
_root.gotoAndPlay("指定シーン",フレーム番号);
}


----------

どなたか詳しい方アドバイスよろしくお願いいたします。

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

  • 回答No.1
  • ベストアンサー
ご質問で書かれている最後のスクリプト,

> loadMovieNum("親swf", 0);

これはいったいどういうこと???
という意味不明な疑問が残りますが,
これは無視したものとして回答します。



親swf に 子swf を読み込むとか読み込まないとか以前の話ですが,
ムービークリップクラスの gotoAndPlay() メソッドは,

 ムービークリップ.gotoAndPlay(フレーム数 or フレームラベル)

というシンタックスが決まっていて,
そもそもシーンの指定はできません。


一方,関数である gotoAndPlay() は,

  gotoAndPlay("シーン名", フレーム数)

または,

  gotoAndPlay(フレーム数 or フレームラベル)

のように,2通りの使い方ができて,
上のように,第1引数に シーン名 を指定することができます。


ご質問にあるような場合は,
子→親 のフレーム移動の命令を出しますから,階層を越えています。
このような場合,関数である gotoAndPlay() は一般的に使えません。

一般的でない方法を取ると,
関数である gotoAndPlay() を使えるので次のようにすれば一応はできます。
(例:シーン 2 の フレーム1 に移動させる場合)

----------------------------
on (release) {
tellTarget (_root) {
gotoAndPlay("シーン 2", 1);
}
}
----------------------------

しかし,
tellTarget は Flash Player 5 以降では使用を半禁止にされているスクリプトで,
使用は避けた方が良いです。


というわけで,
階層を越えたシーン移動を gotoAndPlay() メソッドでさせる場合は,
フレームにラベル名を付けて,フレームラベルに gotoAndPlay() するようにしましょう。

この対処法については,
次の URL でも書かれています。

gotoAndPlay/gotoAndStopでシーンの移動ができない
http://www.fumiononaka.com/TechNotes/Flash/FN0205002.html
補足コメント
shina_megu

お礼率 50% (1/2)

sassakunさま
アドバイスありがとうございました!

移動させたい「親ファイル」のタイムラインに
ラベル名「menu」と名前を付け
「子ファイル」の該当リンクボタンに
下記スクリプトを記述する事で実現しました。
----------------------------

on (release) {
_root.gotoAndPlay("menu");
}

----------------------------

これで正常に動いているので良いと思うのですが
合ってますでしょうか?
投稿日時:2007/03/21 15:22

その他の回答 (全1件)

  • 回答No.2
#1です。

> これで正常に動いているので良いと思うのですが
> 合ってますでしょうか?

合っています合っています。
そういうことで OK です。

やはり,
loadMovieNum("親swf", 0);
は不要だったのですね。
元から 親swf は表示されているはずなのに,
なぜ再びロードする必要があるのだろう???
と考えてしましました(考えてもわかりませんでしたが)。
お礼コメント
shina_megu

お礼率 50% (1/2)

sassakunさま
非常に助かりました!
アドバイスありがとうございました!
又何かありましたら教えてください。
よろしくお願いいたします。m(_ _)m
投稿日時:2007/03/21 17:15
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ