• ベストアンサー

いくつかの外部swfムービーをつなげてムービーをつくりたい。

よく、いくつかのswfムービーで構成されているサイトをみます。 セキュリテイー的にも、いくつかにわけてあると安心なのですが、どのようにひとつに読み込んでいけばよいのでしょうか? ひとつがおわったらどんどん指定した外部swfムービーを流していきたいのです。loadMovieや、unloadMovieなどを使うのでしょうけれど、一つ終わったら次へどんどん再生していきたいのです。どうしたらよいのでしょうか。。。お願いします。

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

セキュリテイー的に安心かどうかはさておき, 連続して loadMovie する方法ですが, 例えば,親(読み込む)SWFと同じフォルダに 「movie1.swf」「movie2.swf」「movie3.swf」「movie4.swf」… という感じに子(読み込まれる)SWFがあったとします。 そして「movie1.swf」から順に「movie2.swf」「movie3.swf」…と読み込まれるとします。 ◎すごくシンプルな方法 親SWFの_rootに,例えば「loadMC」というインスタンス名のムービークリップを作ります。 このMCは小さくて透明のMCか,中に何も入っていない空のMCが良いと思います。 そして,親SWFのフレームのスクリプトに _root.loadMC.loadMovie("movie1.swf"); と書けば,「loadMC」というインスタンス名のムービークリップに「movie1.swf」が読み込まれます。 またはボタンにスクリプトを書いて,ボタンで読み込みをさせても良いです。 そして,「movie1.swf」の最終フレームに, _root.loadMC.loadMovie("movie2.swf"); と書いておきます。これで同じ「loadMC」に「movie2.swf」が読み込まれます。 同じ所に新たなムービーを読み込むと自動的に前のムービーは unload されるので, unloadMovie(); は必要ありません。 「movie2.swf」の最終フレームには _root.loadMC.loadMovie("movie3.swf"); 「movie3.swf」の最終フレームには _root.loadMC.loadMovie("movie4.swf");   …  … と書いて行けば良いわけです。 原理はこれだけです。簡単ですね。 ◎少し確実な方法 上のシンプルな方法だと,「movie1.swf」→「movie2.swf」と切り替わるときにスムーズに流れなかったり, 場合によっては NowLoadind のような「読み込み中」画面をいちいち用意しなければならないかもしれません。 これを避けるためには,「movie1.swf」が終わる前に「movie2.swf」を読み込んでおくと良いです。 以下は,その1つの方法です。 親SWFに読み込むSWF数のレイヤーを余分に用意します。 そして,上のレイヤーから順に同じ位置に 「loadMC1」「loadMC2」「loadMC3」「loadMC4」… というインスタンス名のムービークリップを置いて行きます。 「loadMC1」~「loadMC?」は全て同じムービークリップで良いです。 いちいち作る必要はなく,コピペで増やして行って,インスタンス名だけをそれぞれ付ければ良いです。 そして,親SWFのフレームのスクリプトに _root.loadMC1.loadMovie("movie1.swf"); と書けば,「loadMC1」というインスタンス名のムービークリップに「movie1.swf」が読み込まれます。 またはボタンにスクリプトを書いて,ボタンで読み込みをさせても良いです。 「movie1.swf」の最終フレームから数フレーム~数十フレーム前には, _root.loadMC2.loadMovie("movie2.swf"); と書いておきます。これで次の「loadMC2」に「movie2.swf」が読み込まれます。 (「movie2.swf」の最初のフレームには,stop(); と書いて止めておきます。) そして,「movie1.swf」の最終フレームに, _root.loadMC2.play(); _root.loadMC1.unloadMovie(); と書きます。これで,「loadMC2」に読み込まれた「movie2.swf」がスタートし, 「movie1.swf」自信はアンロードされます。 「movie2.swf」の最初のフレームには上の ( ) 内にも書いたように, stop(); を書いておきます。これで読み込まれても自動的にスタートしません。 また,最初のフレームは空白フレームにしておくほうが良いかもしれません。 (「movie1.swf」より「movie2.swf」の方が大きい場合,見えてしまうかもしれないため。) そして,あとは「movie1.swf」と同様。 「movie2.swf」の最終フレームから数フレーム~数十フレーム前には, _root.loadMC3.loadMovie("movie3.swf"); 「movie2.swf」の最終フレームに, _root.loadMC3.play(); _root.loadMC2.unloadMovie(); と書きます。 「movie3.swf」以降は同様です。 ===================================== 本題とは関係ないかもしれませんが セキュリテイー的に安心というのは保存されないということですか? もしそうだとしたら,少し間違っているかもしれません。 たしかにloadMovieをすると HTML には  <EMBED src="movie1.swf" ~~ </EMBED> みたいにSWF名を書かなくて良いので,SWF名はHTMLのソースからはわかりません。 でも,ブラウザのキャッシュには読み込んだSWFやJPEGやTXTなどすべてが残ります。 手動でそこから保存しても良いですし,SWFを保存するソフトの半分くらいはキャッシュ情報から保存する物だと思います。 たしかに保存はされにくくなるかもしれませんが,案外ソースを読めない人の方がソフトでスラスラ取って行くかもしれません。 本題とは少しずれた余談でした。

dotwing
質問者

補足

sassakunさん、今朝はありがとうございました。 外部swfをつぎつぎに読み込んでいく件ですが、シンプルなものはうまくいきました。けれど今度は、アクションスクリプトでうごかしている外部swfは上手くアクションがきいていないようです。_globalとかつかっていることが問題なのですかね。。。?親のswfにおおもとのアクションスクリプトをうつしてやらなければならないのでしょうか?難しいですね。。。私のやりかたがわるいのでしょうか。。。 すでに一つ目の外部swfが、ループを繰り返してしまったりして、ぜんぜん次にすすみません。どうしたらよいのでしょう。。。困った。。。

その他の回答 (1)

noname#35109
noname#35109
回答No.2

#1です。 補足の内容ではよくわかりませんが,タイムラインはほとんど使わず, スクリプトで動かしている外部SWFがあるということでしょうか。 スクリプトで動かした場合はスクリプトで制しないとなりません。 また書かれたスクリプトによって制し方は全く違うので,答えることはできません。 少なくとも _global自体に問題があるのではなく,その中に書かれた関数に問題があるか,全く別のところに問題があるかだと思います。 スクリプトはスクリプトによって制しないとなりませんが,ひょっとしたら,できるかもしれない方法を書いておきます。 ----------------------------- onClipEvent (load) { frm = 0; } onClipEvent (enterFrame) { frm++; if (frm == 30) { _root.loadMC3.loadMovie("movie3.swf"); } else if (frm == 50) { _root.loadMC3.play(); _root.loadMC2.unloadMovie(); } } ---------------------------- こんなので↑できるかもしれません(できないかもしれません)。 ループしてしまうSWFの1フレームあたりに,透明もしくは空のムービークリップを作って, 上のようなスクリプトを書きます。 フレームで出てくるスクリプトを,フレームではなくスクリプトの中に入れているだけです。 ---上のスクリプトの説明-------- //このムービークリップがよみこまれたら onClipEvent (load) {    //変数frm (フレーム数のつもり) を 1 に設定    frm = 1; } //1フレーム進む時間ごとに以下を計算 onClipEvent (enterFrame) {    //変数 frm を1ずつ加算    frm++;    //もし flm が30になったら    if (frm == 30) {       //親SWFの loadMC3 に movie3.swf をロード       _root.loadMC3.loadMovie("movie3.swf");    //もし flm が30になったら    } else if (frm == 50) {       // loadMC3 をスタートさせる       _root.loadMC3.play();       //自分自身 (movie2.swf) をアンロード       _root.loadMC2.unloadMovie();    } } ---------------------------- if (frm == 30) や if (frm == 50) の部分を調整すればうまく行くかもしれません。 単なる案です。うまく行かない可能性もありますが,方法の1つとして提示しておきます。 それ以上はわかりませんね。

dotwing
質問者

お礼

sassakunさん、親切にどうもありがとうございました。 感謝していますm(__)m

関連するQ&A

  • loadMovieで外部swfの読込みについて

    現在、外部swfを連続で再生させるフラッシュを作成中です。 以下の方法で実現しています。 ------------------------------------------------- 親SWFの_rootに,例えば「loadMC」というインスタンス名のムービークリップを作ります。 このMCは小さくて透明のMCか,中に何も入っていない空のMCが良いと思います。 そして,親SWFのフレームのスクリプトに _root.loadMC.loadMovie("movie1.swf"); と書けば,「loadMC」というインスタンス名のムービークリップに「movie1.swf」が読み込まれます。 またはボタンにスクリプトを書いて,ボタンで読み込みをさせても良いです。 そして,「movie1.swf」の最終フレームに, _root.loadMC.loadMovie("movie2.swf"); と書いておきます。これで同じ「loadMC」に「movie2.swf」が読み込まれます。 同じ所に新たなムービーを読み込むと自動的に前のムービーは unload されるので, unloadMovie(); は必要ありません。 「movie2.swf」の最終フレームには _root.loadMC.loadMovie("movie3.swf"); 「movie3.swf」の最終フレームには _root.loadMC.loadMovie("movie4.swf");   …  … ------------------------------------------------- 作成後のプレビュー又はswfをダブルクリックなどで直接表示させると正常に表示されます。 しかし、HTMLに埋め込むと真っ白な状態でまったく表示されません。 調べているのですが原因がわかりません。 どなたかご教授のほど宜しくお願い致します。

    • ベストアンサー
    • Flash
  • ロールオーバーすると次の外部SWFへ

    環境:MacOS X    FLASH 2004MX ActionScriptの初心者の為に何をするにしてもつまずいてます… 宜しくお願い致します。 現在は、外部からSWFファイルをloadMovieで読み込んでいます。base.swf内のボタン(button01)をロールオーバーすると、イスタント名:kara_movieが入れ替わる簡単な仕組みです。 on (rollOver) { this.kara_movie.loadMovie("001.swf"); } しかし、この状態では別のボタンへロールオーバーしなければ 新たな外部SWFを読み込まない状態となっております。 ロールアウト(rollOut)すると001.swfの再生終了を待って 次の外部SWF(002.swf)を読み込む為にはどうすれば 宜しいでしょうか? また、そのまま003.swf→004.swf…と続いて再生が出来ればと 思っています。 どなたか、お教え頂けましたら幸いです。 以前も、ご指摘頂きましたが文章が分かり難いので 誤解をまねいてしまった事もございました・・・ 見苦しい文章とは思いますが宜しくお願いします。 参考にしているのは下記のURLのサイトのメインのFLASHバナーです。 http://www.konami.co.jp/

  • 外部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の読み込みをくりかえして行いたい

    こんにちわ、外部のswfの読み込みたい場所を決めて、 1、ムービー再生時に外部swfを再生する 2、次に読み込ませた外部swf内に作ったボタンをおすことにより同じ場所に別の外部swfを再生する 3、新しく読み込んだものにもボタンをつけ1や2で読み込んだファイルを再生する これらのようなことをしたいのですが、ボタンを押しても反応がありません。 どのように作成したらうまくいくか知っている方いたら教えてください。

    • ベストアンサー
    • Flash
  • ムービークリップ内に空ムービーを置いて外部SWFをロードするやり方

    ムービークリップ(menu1)このムービーはシーン1に設置してあり、動きはクリックすると右から左に引き出す感じのナビゲーションにしてあります。 それがmenu1,menu2,menu3とありそれぞれ再度押すと元の場所にもどります。 ここまでは完成しているのですが、このmenu1,2,3をそれぞれ押して引き出した後にその引き出した画面にコンテンツを外部swfでロードさせたいのですが、まったく表示されず白い画面のままです。 this.stop(); if(this.onFlag == 0){ //↑左にコンテンツをopenさせ元の位置に戻らぬようストップ //↓menu1外部charch読み込みswf_charchは空ムービー swf_charch.loadMovie("charch.swf"); } このスクリプトをムービークリップmenu1のフレームに書き込んでます。 空ムービー(swf_charch)をつくりmenu1に配置して、インスタンス名もswf_charchにしてあります。 もしかして、ムービークリップ内に空ムービーを入れ子にして外部swfの読み込みは不可能なのでしょうか? それともスクリプトの記述がloadMovieではなく別のスクリプトなのでしょうか? 説明が下手で分かりづらいと思いますが、分かる方いらっしゃいましたら宜しくお願いいたします。

  • 外部swfを読み込んだときのずれ

    flashのファイルにムービークリップ(a_mc)を置き、そこに外部からswf(b.swf)を読み込みたいのですが、どうしてもそのムービークリップに重ならず、ずれてしまいます。メインの画面(540pix×540pix)の左上にくっついてしまう状態です。a_mcとb.swfのサイズを同じにして(225pix×300pix)基準点を左上にしてみてもだめです。 フレームアクションはこんなかんじです。↓ loadMovie("b.swf", "a_mc"); 外部から読み込んだファイルの位置を座標指定できるような方法など、わかる方がいらっしゃったら、よろしくお願い致します。

  • 外部ムービー再生終了後、特定のラベルへ飛ぶ

    外部ムービー再生終了後、特定のラベルへ飛ぶ 質問させていただきます。 制作環境はAS2.0 FlashCS3 やりたいことは親swfに外部swfムービーを読み込んで 外部ムービーの再生が終わったら、親swfの特定のラベルに飛ぶ、というものです。 親swfの1フレーム目に書き込んだスクリプトは・・・ this.stop(); this.movie.loadMovie("movie1.swf"); if ( movie._currentframe == movie._totalframes ) { this.gotoAndStop("next"); } しかし、いきなりnextラベルに飛んでしまいます・・・ 宜しくお願い致します。

  • 複数の外部swfを一瞬の間も空けずに表示させたい

    【希望の動き】 外部FLVのキューポイント機能を使って、ある特定の時間がきたら外部swfを表示させたい 【現状の動きと問題点】 cuePointListenerObj.cuePoint=function (evt:Object) { loadMovie("images/" + evt.info.name+ ".swf","cueBox_mc") ; } //--------------cueBox_mcは外部swfを表示させるMC--------- 一応、上記のScriptで外部swfの表示はできていますが、外部swfとその次に表示される外部swfの間に一瞬だけ「間」が空きます。 いろいろ調べてみると、loadMovieはムービークリップを「入れ替え」る機能であるとのことなので、次のムービークリップを読み込む「間」ができてしまうようです。 ですのでムービークリップを「重ねて」表示できれば「間」が空くことはないのではないかと考えたのですが、その方法が思い浮かびません。 (loadMovieに「深度」の機能があればいいのに・・・) 【やってみて失敗したこと】 attachMovieを使って全ての外部swfを読み込んでから、メインの動きをするフレームに飛ぶようにしたらどうか、と思って試してみましたが、外部jpgのように静止画として読み込まれるだけで、アニメーションの機能は消えてしまいました。 【そこで質問!】 外部swfを重ねて表示させる方法はないでしょうか? もしくは、「間」を空けずに連続して外部swfを表示させる方法はないでしょうか? 【使用環境】 Flash8 WindowsXP よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ボタンを押した時、外部swfを読み込み

    ムービークリップ内のボタン(写真のサムネイル)を押した時、外部.swf(写真やコメントを書いたswf)を読み込もうとしております。 _rootに空のムービークリップを配置し、インスタンス名を load_mcと指定。 _rootに配置したムービークリップの中に配置してあるボタンに on (release) { this._parent.load_mc.loadMovie("comment.swf"); } と書きました。しかしボタンを押してもcomment.swfが表示されません。 解決方法をお教えください。よろしくお願いいたします。

  • ひとつのムービーを再生しながらswf読み込み

    はじめまして。 質問なのですが、 flashで、一つのムービーを再生しながら、 その下の階層に外部のswfファイルを再生するというのは可能でしょうか。 たとえば、レイヤー1で雪が降るムービーを作って、 レイヤー2で外部swfを読み込み。 再生すると外部swfの上に雪が降るというふうにしたい場合、 どうしたらよいのでしょうか。 教えてください。

    • ベストアンサー
    • Flash

専門家に質問してみよう