FlashMX:外部swfから大元のswf上の指定フレームへ移動させる

このQ&Aのポイント
  • Flash MXとWindows Vistaを使用して、大元のswf上で外部swfから指定のフレームに移動する方法を説明します。
  • 大元のswf(main.swf)で20個ほどの小さな写真兼拡大ボタンを作成しています。小写真ボタンAをクリックすると、photo-a.swfがレベル1で読み込まれます。main.swfの拡大ボタンを消すために特定のフレームにボタンを消すフレームを作成し、そこにgotoStopを配置します。
  • photo-a.swf内でムービーが終了すると、戻るボタンを用意しています。このボタンをクリックすると、指定のフレームに移動し、写真が消えるアニメーションが再生されます。しかし、現在の記述ではうまく動作しません。photo-a.swfからmain.swf上の指定のフレームに移動させるためには、どのように記述すればよいでしょうか?
回答を見る
  • ベストアンサー

FlashMX:外部swfから大元のswf上の指定フレームへ移動させる

FlashMX:外部swfから大元のswf上の指定フレームへ移動させるには? Flash MX、Windows Vistaです。 大元のswf上で、小さな写真兼その拡大ボタンを20個ほどつくろうとしています。 ●大元swf・・・main.swfとします。 ●大写真Aswf・・・・photo-a.swfとします。 main.swfの小写真ボタンAをクリックすると、 ・レベル1に外部swfとしてphoto-a.swfを読み込み ・main.swfで、拡大ボタンを消さなくてはならないので、停止フレームの直後にボタンだけを消したフレームをつくり、そこにgotoStopさせた そして、photo-a.swfでムービーがひととおり終わったのち、「戻る」ボタンを用意しており、それをクリックすると、 ・直後の「back」というフレームラベルにgotoさせ、だんだん写真が消えていくるトゥイーンをさせたあと、最後のフレームに ------------------------------------------------------ unloadMovieNum(1); mc-menu00.gotoAndPlay("btn_on"); ------------------------------------------------------ と記述しました。 意図は、 (1)今ロードしていたphoto-a.swfを消すこと (2)main.swfのフレームを、拡大ボタンが出現しているひとつ前のフレームに戻す ですが、(2)がなりません。 どのように記述すれば、photo-a.swfからmain.swf上の指定フレームラベルへ移動させることができるでしょうか?

  • touchy
  • お礼率88% (704/796)
  • Flash
  • 回答数2
  • ありがとう数7

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

まず「レベル」を使うのはやめましょう。 レベル は Flash 4 時代(ギリギリ Flash 5 まで)の遺物です。 ActionScript 1.0 未満 ("以下" ではなく "未満") 時代の概念で ActionScript 1.0 に完全対応しきれていません。 ※レベルはオブジェクト(ムービークリップ)でないのに  オブジェクトのような振る舞いをする場合がある  (その逆の場合もある)  など矛盾が多く混乱の元になるだけ。 ※レベルはActionScript 2.0 までは   かろうじて生き残っていたが  ActionScript 3.0 では完全に消えた概念である。  (そもそも ActionScript 2.0 の時点で存在した   こと自体がおかしい。) 外部SWFをレベル1などにロードするのではなくて MC(ムービークリップ)を手動またはActionScriptで作成して, そのMCに外部SWFをロードするようにしましょう。 そうすれば ターゲットパスさえ理解していれると普通に解決するはずです。 「ターゲットパス」 http://homepage3.nifty.com/ginga-b/MX/targetpath.html ◎具体例 ・「main.swf」の _root 階層などのフレーム1などに書くスクリプト↓ -------------------------- //この階層の再生を停止 stop(); //この階層の深度0に「loader_mc」というMCを作成 this.createEmptyMovieClip("loader_mc", 0); -------------------------- ↑これは ActionScript で 「loader_mc」 というインスタンス名のMCを作成する場合です。 任意のレイヤーの任意の座標に手動でMCを作成して そのMCに例えば 「loader_mc」 というインスタンス名を付けてもかまいません。 もし手動でMCを作成した場合は スクリプト抜きでも座標やレイヤーを指定することができます。 ・「main.swf」の ボタンに書くスクリプト↓ -------------------------- on(release){ //同じ階層の「loader_mc」に「photo-a.swf」をロード loader_mc.loadMovie("photo-a.swf"); //この階層を次のフレームへ進めて停止 nextFrame(); } -------------------------- ↑これの  //この階層を次のフレームへ進めて停止  nextFrame(); の部分はどうすべきか私は知りません。 nextFrame(); ではなく gotoAndStop("btn_off"); のようにしていたら,別にそのままで良いです。 ・「photo-a.swf」の _root 階層などの最終フレームに書くスクリプト↓ -------------------------- //親階層を前のフレームに戻して停止 _parent.prevFrame(); //この階層からムービーをアンロード this.unloadMovie(); -------------------------- ↑これの  //親階層を前のフレームに戻して停止  _parent.prevFrame(); の部分はどうすべきか私は知りません。 _parent.gotoAndPlay("btn_on"); かもしれませんし _parent.mc-menu00.gotoAndPlay("btn_on"); かもしれません。 作られているムービーによって変える必要があります。 ◎ポイント ・MC(ムービークリップ)に外部SWFをロードしましょう。 ・ターゲットパスをしっかり理解しましょう。  

touchy
質問者

お礼

実は、ムービークリップで最初つくっていたんですが、うまくいかなくて、 ネットで探したページにはどこでもレベルというもうひとつの方法が必ず併記されていたので こちらを試し、結果できました。20個以上の外部拡大写真を見事に操作することできました。 どこをどう操作してもおかしくならないのですが、ご助言点は非常に重要と判断されるため、 こちらのほうへの書き換えを試そうと思います。まずは取り急ぎお礼まで。 作業後どうなったかを補足欄で投稿させていただきます。 大変ありがたい内容です。

その他の回答 (1)

  • BumeshiOK
  • ベストアンサー率92% (12/13)
回答No.1

unloadMovieNum(1); mc-menu00.gotoAndPlay("btn_on"); ↑結局これはどこから出してる命令でしょうか? photo-a.swfからだとすると、 mc-menu00がルート(というかレベル0)に置いてあるものなら、 _level0.mc-menu00.gotoAndPlay("btn_on"); じゃないでしょうか。

touchy
質問者

お礼

ありがとうございました。 _level0.mc-menu00.gotoAndPlay("btn_on"); では動きませんでした。 が、これがわかったおかげで何をどうすればわかったので、完成させることできました!

関連するQ&A

  • 外部swfを読み込むとき、座標指定したいのですが

    大元が「0.swf」、読み込む外部ファイルが「1.swf」として、0.swfにボタンを配置し、 on (press) { loadMovie("1.swf",1) } と書きました。 このままでは、1.swfは、0.swfの0,0位置に読み込まれますが、これを、座標指定してもう少し右下に読み込むためにはどう記述すればよいのでしょうか? よろしくお願いします。 Flash MX Version6/WinXP

    • ベストアンサー
    • Flash
  • 外部swfのラベル移動

    FLASH MX2004で作成しています。 main.swf上のload_mcのレベル0に、外部swfのA.swfを読み込んでいます。 #main上のフレーム this.load_mc.loadMovie("A.swf", 0); A.swfが終わると同時に、main.swf上のload_mcのレベル1に、外部swfのB.swfを読み込みます。 #A.swfの最終フレーム stop(); _root.load_mc.loadMovie("B.swf", 1); ここまではできています。 その後、B.swf内のcontentsというMC内のラベルをlabel2に移動させたいのです。 #A.swfの最終フレーム stop(); _root.load_mc.loadMovie("B.swf", 1); _root.load_mc.contents.loadMovie("label2"); これができません。 _root.load_mc.contents.loadMovie("label2"); _root.contents.loadMovie("label2"); _root.load_mc.loadMovie("label2"); load_mc.contents.loadMovie("label2"); contents.loadMovie("label2"); なども試してみましたが、うまくいきません。 わたしの頭ではこれが限界です。 ぜひともお力お貸しください!

  • 外部swfのフレームを指定して読み込み

    あるムービークリップ(mc1とします)に外部swf(001.swfとします) を読み込むことはできるのですが、 mc1に001.swfを読み込み、001.swfの50フレーム目から再生ということは可能でしょうか。 いろいろと調べたのですが、どうしてもうまくいきませんでした。 ボタンを作りボタンを押したら読み込み50フレーム目から再生という指示を書いたのですが、、、 on (press) { _root.mc1.loadMovie("top.swf"); _root.mc1.gotoAndPlay(50); } 1フレーム目から再生されてしまいます。

  • 外部SWFを読み込み、指定したラベルから再生したい。他

    Flash8を使用し、Win/Mac両方で作業しています。 ActionScriptは基本をどうにか理解しつつあるレベルです。よろしくお願いします。 「base.swf」「submovie.swf」の2つのファイルを用意し、 base.swfのステージに、 ・空のムービークリップ(インスタンス名:main) ・ボタン(インスタンス名:buttom) を配置し、ボタンに下記アクションを記述しました。 on (release) { loadMovie("submovie.swf", "main"); } この記述で、「submovie.swf」が「main」に表示されるのを確認しました。 そして、ここからが質問なのですが、 1.どこにも「stop」アクションを仕込んでいないはずなのに、LoadMovieで読み込んだ「submovie.swf」が1フレーム目で停止してしまいます。 何か別の記述が必要なのでしょうか。 2.ボタンクリックにより、「submovie.swf」内の指定したフレームを再生したいのです。 「submovie.swf」には「first」「second」「third」の3つのラベルを設定しています。 たとえば、「buttom」インスタンスをクリックした際に、「submovie.swf」内「second」ラベルを再生したい場合、どのように記述すればよろしいでしょうか。 また、もし上記の条件でラベルが使用できない場合、何か代替となる方法があるでしょうか。 不足している情報があれば追記します。よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ボタンで別swfの任意のフレームに移動したい

    いつもお世話になっています。 WinXPでFlash MX2004を使用しています。 ボタンクリックで別swfの任意のフレーム(ラベル)に移動したいと考えているのですが、可能でしょうか? 具体的にいうと、 01.swf上にボタンA/B/Cを設置。 リンク先の02.swfにフレームラベル「A」「B」「C」があって、01.swfのボタンをクリックすると、02.swfのそれぞれのフレームに移動。 ずいぶん以前にそういった内容の記事をWeb上で見たように思ったのですが、「Flash」「ラベル」「任意」などの単語で検索しても見つけられません。 お心当たりの方がいらしたらどうかご指導ください。

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

    アクションスクリプト初心者です。お力をお貸し下さい、どうぞよろしくお願いいたします。 「親swf」ファイルに、「子swf」ファイルを読み込み、「子swf」のリンクボタンから 「親swf」ファイルの指定「シーン/フレーム」にリンクをしたいのですが上手くいきません。 「親」ファイルのタイムライン上に配置した「ムービークリップ(インスタンス名:tv)」を 外部swf「子swf」に差し替えるスクリプトは ---------- loadMovie("子swf", "tv"); stop(); ---------- と、記述して上手く動いてますが、 「子swf」のリンクボタンから「親swf」の指定「シーン/フレーム」にリンクさせるにはどの様なスクリプトを書けば良いのか?アドバイスをお願いいたします。 ※「親swf」の指定「シーン/フレーム」とは、「子swf」を読み込む前の「シーン/フレーム」 に戻したいのです。 感覚として下記のようなスクリプトを書きましたが、「親swf」の最初のシーン/フレームに 戻ってしまいます。 リンクボタンに記述 ---------- on (release) { loadMovieNum("親swf", 0); _root.gotoAndPlay("指定シーン",フレーム番号); } ---------- どなたか詳しい方アドバイスよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部ファイルのフレームラベルにリンクをさせたい。

    こんにちわ。 色々、探してみましたが、頭がこんがらがってしまい、時間ばかりが過ぎて行くので質問させていただきます。 外部ファイルのフレームラベルにリンクをさせたいのですが、どなたかご存じの方ご教授ください。 flame.swfを読み込んだときは自動的にcontents1.swf→contents2.swfと進み、ボタンをクリックすると 指定されたフレームラベルにリンクさせたいのです。 色々試してみたのですが、うまく外部ファイルが読み込めなかったりボタンが機能しない状態です。 flame.swf contents1.swf contents2.swf flame.fla  kazari   ボタンの飾りグラフィクが置いてある。  button1-1 1-1(contents1.swf内1-1フレームラベルにリンクするボタン)  button1-2 1-2(contents1.swf内1-2フレームラベルにリンクするボタン)  button2-1 2-1(contents2.swf内2-1フレームラベルにリンクするボタン)  button2-1 2-2(contents2.swf内2-2フレームラベルにリンクするボタン)  mytarget mytarget(movie clip。ここにcontents1.swfもしくはcontents2.swfを読み込ませる) 1 フレーム目のアクションスクリプトに stop(); button1-1のボタンスクリプトに on (release) { gotoAndPlay("1-1"); /コメント:フレームラベル1-1にボタン飾りがあるため同じシーン内の「1-1」に行くように/ } 1 フレーム目のmytargetアクションスクリプトに onClipEvent (load) { loadMovieNum("contents1.swf", 1); } フレームラベル1-1のmytargetアクションスクリプトに onClipEvent (load) { this.mytarget.loadMovie("contents1.swf" , 1); flg='contents1.swfのフレームラベル'; } contennts1(2).fla 1フレーム目のアクションスクリプトに stop(); gotoAndPlay(flg); 環境:Max OS 10.3.6 Flash8

    • ベストアンサー
    • Flash
  • FLASHで別swfファイルの指定フレーム読み込み

    1.swfのボタンに以下のようなアクションスクリプトを指定してあります。 on(press){ loadMovieNum("2.swf",0); } これでボタンを押すと2.swfが読み込まれます。 ですが、この2.swfの例えば、5フレーム目、などのようにフレームを指定して読み込むことはできないのでしょうか? よろしくお願いします。

  • AS3.0で子MCから他の子MCのフレームへ移動

    Flash professional CS5を使用してAS3.0で記述しています。 メインのタイムラインにフレームラベルが二つ(main1とmain2)あります。 main1にはステージにムービークリップのmc1が,main2にはmc2が配置してあります。 さらに, こういう書き方でいいのかわかりませんが; mc1内にはフレームラベルsub1,sub2があります。 同様に, mc2内にはフレームラベルpart1,part2があります。 sub1ではボタン(btn1)があり,押すとフレームラベルsub2に進むようになっています。(確認済み) sub2にもボタン(btn2)が用意してあり押したらムービークリップmc2内のpart2に移動させたいと考えています。 フレームラベルsub2で btn2.addEventListener(MouseEvent.CLICK, Click2); function Click2(evt:MouseEvent):void{ MovieClip(parent).gotoAndStop("main2"); } と記述すればメインタイムラインのフレームラベルmain2に移動することは確認しました。 しかしフレームラベルpart2へ移動するにどのように記述したらよいかわかりません。 MovieClip(parent).mc2.gotoAndStop("main2"); としてもやはりmc2が未定義なので無理なのでしょうか? もしそうでしたらmain1の段階で定義しようかと思うのですが,その場合はどのように記述すればよいのでしょうか? つまり,メインタイムライン上における後ろのフレームラベルの子のフレームラベルに移動したいです。 説明がうまくできないので図も載せます。 http://www1.axfc.net/uploader/Img/so/99986 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 外部swfファイルの指定フレームでムービーを止めたい

    Flash MXを使用しています。 外部ファイルを読み込んで、指定のフレームでムービーを止めるには どのような指示をすれば良いのでしょうか? ちなみに今は外部ファイル側に止めたい所にフレームラベル(stop)を付けて 読み込む側のMCに止める指示を書いています。 onClipEvent (unload) { gotoAndStop("stop"); } このように指示しても結局最終フレームまで読み込んでしまいます。 初心者です。よろしくお願いいたします。

専門家に質問してみよう