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を保存するソフトの半分くらいはキャッシュ情報から保存する物だと思います。
たしかに保存はされにくくなるかもしれませんが,案外ソースを読めない人の方がソフトでスラスラ取って行くかもしれません。
本題とは少しずれた余談でした。
この回答への補足
sassakunさん、今朝はありがとうございました。
外部swfをつぎつぎに読み込んでいく件ですが、シンプルなものはうまくいきました。けれど今度は、アクションスクリプトでうごかしている外部swfは上手くアクションがきいていないようです。_globalとかつかっていることが問題なのですかね。。。?親のswfにおおもとのアクションスクリプトをうつしてやらなければならないのでしょうか?難しいですね。。。私のやりかたがわるいのでしょうか。。。
すでに一つ目の外部swfが、ループを繰り返してしまったりして、ぜんぜん次にすすみません。どうしたらよいのでしょう。。。困った。。。
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つとして提示しておきます。
それ以上はわかりませんね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ActionScriptで決めた時間だけ...
-
カラクリ時計の作り方
-
FLASHとXMLのスライドショーに...
-
最後のフレームで数秒止めてル...
-
UWSCの保存から再生方法
-
flashのActionscriptでのムービ...
-
Access2010でサブフォームのフ...
-
シンクライアントとMetaFrameの...
-
背景画像をを継ぎ目無く無限ス...
-
GetPrivateProfileString変値
-
被写体のHSVを正確に取得(webca...
-
音ズレが…
-
眼鏡レンズを持参すればフレー...
-
車の運転時のメガネ 縁なし(...
-
PIC EEPROM
-
1つのボタンで音の違う2つの...
-
フレーム内のオプションボタン...
-
変数の名前を取得
-
動画の遅延再生プログラム
-
外部ムービー読込み後 AS が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
雪の降るスクリプトで、、、
-
fps テキスト入力・または...
-
アクセスするたびにランダムに...
-
<Flash> 2枚ずつの画像をラ...
-
カーソルのカスタム
-
日数、時間指定で、変化させる...
-
flashがブラウザNetscape4.7で...
-
ムービークリップの位置と角度...
-
絞り込み条件検索について
-
ホームページでFlash読み込み後...
-
SharedObjectが効かない
-
Flash4でloadMovieの完了を知る...
-
外部swfファイルを読み込み任意...
-
フレーム内に移動したい
-
Access2010でサブフォームのフ...
-
phpで音を鳴らす
-
フレーム内のオプションボタン...
-
車の運転時のメガネ 縁なし(...
-
WEBブラウザの重複起動の禁止
-
ソーラーパネルのアルミフレー...
おすすめ情報