- ベストアンサー
外部ムービーコントロールの方法
- FlashMXを使用して、読み込まれた外部ムービーをコントロールする方法について解説します。
- yomikomu.exeのシーン2フレーム1を表示させるためのボタンアクションについて、具体的な記述方法を教えてください。
- My Documentsフォルダ内のyomikomu.exeを使用して、外部のyomikomareru.swfを読み込み、指定のフレームに遷移する方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
おはようございます。 同時に存在しているのなら,単純に -------------------------------- on (release) { loadMovie("/gaibu/yomikomareru2.swf", "_root.yomikomareru2"); _root.gotoAndPlay("label2"); } -------------------------------- です。 ごくごく普通で行けるので,そんなに悩むことではありません。 _root.yomikomareru2 に /gaibu/yomikomareru2.swf を読み込めば良いだけです。
その他の回答 (3)
#2です。 こちらも,混同をどうさけようかと思ったのですが, やはり,混同しますよね。 説明不足で申し訳ないです。 >> yomikomu.exeのシーン2レイヤー3に >> ムービークリップ インスタンス名:yomikomareru2 >> という対象物としてすでに出没しています。 出没していません(と思います)。 なぜなら,#2の補足の補足にも >> アクション >> >> yomikomu.exe >> シーン1 >> レイヤー1 フレーム15 フレームアクション >> gotoAndStop("シーン 1", 10) とかかれています。 読み込まれるSWFのボタンをクリックしない限り,親ムービーは, "シーン 1", フレーム10 で止まっているわけですよね。 "シーン 2"はまだ表示されていません。ですから, yomikomu.exe に >> シーン2 ~省略~ >> loadMovie("/gaibu/yomikomareru.swf", "yomikomareru") と書かれていても,それは,シーン1のフレーム10の時点では存在していないのです。 また, >> yomikomu.exeのシーン2レイヤー3に >> ムービークリップ インスタンス名:yomikomareru2 >> という対象物としてすでに出没しています。 とかかれていますが,yomikomareru2 も"シーン 1", フレーム10 の段階では出没していません。"シーン 2"には行き着いていないのですから。 yomikomu.exeの"シーン 2" には,yomikomareru.swf のボタンがクリックされないと行けないわけでしょう。 だから,それまでは存在していないのです。 #2で説明した,オブジェクト(対象物) というのは,yomikomareru2 のことです。 当然,yomikomareru2 はファイルとしては読み込まれています。 でも,yomikomu2 というムービークリップにスクリプトを書くとしたら, onClipEvent (load) { うんぬんかんぬん… } などという書き方になるでしょう。 onClipEvent (load) これはファイルとしてロードされたらという意味ではないです。 このムービークリップが,ステージ上に出没したら, うんぬんかんぬん というスクリプトです。 混同をさけたかったのはこの場所です。 たしかに,シーン 1が始まって,コンマ数秒後に yomikomu2 はファイルデータとしてはロードされています。でも,オブジェクトとしては,"シーン 1" の段階ではまだ存在していません。 これを説明すると,本題からかけはなれてしまうので,説明しなかったのですが, 説明しておいた方が良かったかなと,反省しております。 "シーン 2"の yomikomareru2 には,必ず,yomikomareru2.swf がロードされるのであれば,"シーン 2" の yomikomareru2 が始めて出現するフレームに loadMovie("/gaibu/yomikomareru2.swf", "yomikomareru2") と書いてください。 "シーン 1" のフレーム10 に存在するボタンからは "シーン 2" になって始めて出没するようなオブジェクトには,直接何も言えません。 だから,「まずはオブジェクトありき」 なのです。 存在しないオブジェクトに命令はできません。せめて,フレームにそういう命令を出させる書き置きをするしかないのです。 それと, 重要な間違いをしていましたが, ---------------------------- on (release) { _root.flg = "/gaibu/yomikomareru2.swf"; //←これが正解 _root.gotoAndPlay(16); } ---------------------------- が正解です。 ふつう,HTMLにSWFが貼り付いた状態からしか考えない物で,外部パスの頭に / を入れるのを忘れておりました。 実験した結果, EXEにした場合のみ,質問者さまが書かれているように,外部のパスの先頭に,「これは外部へのパスです」という意味の / をいれなければならないことに気づきました。 その他#2で書いた,外部ファイルをロードするパスの頭には / を入れてください。
お礼
お返事ありがとうございます。 私がよく理解できないために1つの質問に大変お手数をおかけしておりますが、親切な対応にはありがたく思っております。 理解できないことがあると、そのことがとても気になる性格ですので、そのような性格の者に付き合ってくださる方にはとても申し訳ないことです。
補足
とても申し上げにくいことなのですが、やはり、 yomikomu.exeのシーン2レイヤー3にムービークリップ インスタンス名:yomikomareru2は対象物としてすでに出没している と思うのですが・・・。 その根拠なのですが、御回答(NO.3)に書かれた なぜなら,#2の補足の補足にも から yomikomu.exeの"シーン 2" には,yomikomareru.swf のボタンがクリックされないと行けないわけでしょう。 だから,それまでは存在していないのです。 (はっきりとはこの部分まで。理解不足のため、もしかすると、もう少し後の部分まで。) のとおりだからです。 補足に字数制限があるようですので、#2の補足の補足にも 御回答(NO.1)の補足部分に続きます。 と最後に書かせていただき、#1の補足の補足に "動き" を書かせていただきましたが、その "動き" として書かせていただいた最後の部分が希望することなのです。 私の確認不足のため "yomikomu.exe" 以外のファイル名とインスタンス名が "yomikomareru" ではなく "yomikomu" と誤っておりましたが・・・。 つまり、yomikomareru.swfのボタンはクリックする(されている)のです。 この問題については、すでに御回答(NO.1)で解決してくださったのですから。 追加質問させていただいたのは、その後のことで、yomikomu.exeのシーン2に進めば、フレーム1のloadMovie("/gaibu/yomikomareru.swf", "yomikomareru")はシーン1と同じですから、yomikomu.exeのシーン2レイヤー2のyomikomareruにもyomikomareru.swfが読み込まれると思います。 そして、フレーム11まで進めば、yomikomu.exeのシーン2レイヤー2のyomikomureruに読み込まれたyomikomareru.swfのフレームが11~15になる(最終的には、フレーム12で止まる)と思います。 この "動き" によって、シーン1で読み込まれた場合とは異なるボタンアクションがシーン2で読み込まれたyomikomareru.swf(フレーム11~15の部分)には追加できると思います。 また、 "シーン 2"の yomikomareru2 には,必ず,yomikomareru2.swf がロードされるのであれば,"シーン 2" の yomikomareru2 が始めて出現するフレームに loadMovie("/gaibu/yomikomareru2.swf", "yomikomareru2") と書いてください。 ということに関しては、ありがたい御意見ではありますが、必ず "yomikomareru2.swf" がロードされるのではない(むしろその可能性の方がない)ので、あえて書いておりません。 説明不足のため失礼いたしました。
#1です。 そもそも, フレーム1・15 とか書かれている意味がわかっていないのですが, フレーム1/15 つまり,15フレームあるうちの 1フレーム目 ということでしょうか? それとも フレーム1+15 つまり,1フレームと15フレームということでしょうか? よくわからないので,上記の場合フレーム1 と解釈して以下を書きます。 >> yomikomareru.swfのシーン1レイヤー2フレーム11・15に >> どのような記述をすれば、yomikomu.exeのシーン2レイヤー3の >> yomikomareru2にyomikomareru2.swfを読み込ませられますか。 yomikomareru.swf(読み込まれるSWF)の"ボタン"?にどう書けば,まだ出没していない yomikomareru2 というムービークリップに, yomikomareru2.swf を読み込むことができるでしょうか? という意味ですか? これは,「シーン」の問題 や 「読み込むためのムービークリップ」の問題 や 「読み込む」問題 ということとまったく関係ない話になります。 「まずはオブジェクト(対象物)ありき」です。 何をするのでも。 例えば,フレーム20 から存在するインスタンス名 A というムービークリップがあるとして, フレーム 1に, _root.A.play(); と書いたとしても, フレーム20にある A は動き出しません。 人間と同じです。 太郎君が弟の次郎君に, 「おい次郎,パンを買ってきてくれ。」 と言ったとしても, もし次郎がそこにいなければ,次郎はパンを買いに行きません。 というか,買いに行けません。 「パンを買ってきてくれ」 という指示自体を聞いていないのですから当然です。 次郎のいない場所で,太郎が, 「おい次郎,パンを買ってきてくれ。」と言っても,それは単なる太郎のつぶやき,独り言です。 では,その場合,太郎はどうするべきかと言うと, やがて帰って来るはずの弟の次郎が帰ってくるのを待って, 「パンを買ってこい」 と命令するか, もし自分が他に出かけるのであれば, 「兄ちゃんだが,帰ったらパンを買って来てくれ」 という書き置きを残すべきです。 繰り返しますが,「まずはオブジェクト (対象物 (次郎) ) ありき」です。 以上はFlashに限った話ではないです。 こういう場合は普通Flashに限らずフラグ(旗)を立てます。 そのフラグが1だったらどうする,2だったらどうすると,場合によって実行させるスクリプトを変えます。 だから,具体的に書くと, yomikomareru.swf(読み込まれるSWF)のボタンに書くスクリプトは ---------------------------- on (release) { _root.flg = "2"; //←ココでフラグを立てています。 _root.gotoAndPlay(16); } ---------------------------- そして,yomikomu.exe の シーン2 の フレーム1(?) には ---------------------------- if (_root.flg=="2") { loadMovie("gaibu/yomikomareru2.swf", "yomikomareru2"); // } else if (_root.flg=="3") { // loadMovie("gaibu/yomikomareru3.swf", "yomikomareru2"); } ---------------------------- のようなことを書いて行けばいいことになります。 //のある行は,どうなるのかわからないので適当に書きました。 yomikomu.exe の シーン2 の フレーム1(?) には対象物である yomikomareru2 が存在するので, loadMovie(); は実行されるはずですよね。 フラグは,太郎が残した次郎への書き置きと同じ意味です。 以上が根本的原理です。 IF文を書くのが面倒な場合は,フラグ自体にファイルネーム(gaibu/yomikomareru2.swf) などを値として代入し,その値を参照する方法もあります。 上記のスクリプトを書き換えると, yomikomareru.swf(読み込まれるSWF)のボタンに書くスクリプトは ---------------------------- on (release) { _root.flg = "gaibu/yomikomareru2.swf"; //←フラグがファイル名 _root.gotoAndPlay(16); } ---------------------------- そして,yomikomu.exe の シーン2 の フレーム1(?) には ---------------------------- loadMovie(flg, "yomikomareru2"); ---------------------------- となり,だいぶんシンプルにはなります。
お礼
お返事ありがとうございます。 追加質問に関する御回答(NO.2)を拝見しましたが、私の説明不足のため正しくお伝えできなかったことがあるようですので、少し(?)補足と訂正をさせていただきます。 親のある場所に読み込まれた外部ムービーがまだ何も読み込まれていない親の場所に外部ムービーを読み込むにはどのような方法をとればよろしいでしょうか。 というのは、 yomikomareru.swf(読み込まれるSWF)の"ボタン"?にどう書けば,まだ出没していない yomikomareru2 というムービークリップに, yomikomareru2.swf を読み込むことができるでしょうか? ということではありません。 まだ何も読み込まれていない親の場所 というのは、 yomikomu.exeのシーン2レイヤー3にムービークリップ インスタンス名:yomikomareru2 という対象物としてすでに出没しています。 "まだ何も読み込まれていない"というのは、その対象物に他のムービークリップが読み込まれていないという意味です。 ですので、 「まずはオブジェクト(対象物)ありき」です。 何をするのでも。 ということではないと思うのですが・・・。 よろしくお願いします。
補足
タイムライン yomikomu.exe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ____________________________________________ |●------------------実線----------------→●| レイヤー2| | | | | | | | | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| |●----実 線--→●----------実 線--------→●| レイヤー1| | | | | | | | | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| シーン1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ____________________________________________ |●------------------実線----------------→●| レイヤー3| | | | | | | | | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| |●------------------実線----------------→●| レイヤー2| | | | | | | | | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| |●------------実線----------→●---実線-→●| レイヤー1|旗| | | | | | | | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| シーン2 yomikomareru.swf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ____________________________________________ |●---実線-→● ●---実線-→● ●---実線-→●| レイヤー2| | | | | | | | | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| |●---実線-→●----実 線--→●----実 線--→●| レイヤー1| | | | | | | | | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| シーン1 yomikomareru2.swf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ____________________________________________ |●------------------実線----------------→●| レイヤー1| | | | | | | | | | | | | | | | |__|__|__|__|__|__|__|__|__|__|__|__|__|__|__| シーン1 シンボル yomikomu.exe シーン1 レイヤー2 ムービークリップ インスタンス名:yomikomareru レイヤー1 ムービークリップ シーン2 レイヤー3 ムービークリップ インスタンス名:yomikomareru2 レイヤー2 ムービークリップ インスタンス名:yomikomareru レイヤー1 ムービークリップ yomikomareru.swf シーン1 レイヤー2 ボタン レイヤー1 ムービークリップ yomikomareru2.swf シーン1 レイヤー1 ムービークリップ アクション yomikomu.exe シーン1 レイヤー1 フレーム15 フレームアクションgotoAndStop("シーン 1", 10) レイヤー1 フレーム6 フレームアクション_root.yomikomareru.gotoAndPlay(6) レイヤー1 フレーム1 フレームアクションloadMovie("/gaibu/yomikomareru.swf", "yomikomareru") シーン2 レイヤー1 フレーム15 フレームアクションgotoAndStop("シーン 2", 12) レイヤー1 フレーム11 フレームアクション_root.yomikomareru.gotoAndPlay(11) レイヤー1 フレーム1 フレームアクションloadMovie("/gaibu/yomikomareru.swf", "yomikomareru") yomikomareru.swf シーン1 レイヤー2 フレーム15 レイヤー2 フレーム11 レイヤー2 フレーム10 ボタンアクションon (release) { _root.gotoAndPlay("label2"); } レイヤー2 フレーム6 ボタンアクションon (release) { _root.gotoAndPlay("label2"); } レイヤー1 フレーム15 フレームアクションgotoAndPlay("シーン 1", 11) レイヤー1 フレーム10 フレームアクションgotoAndPlay("シーン 1", 6) レイヤー1 フレーム5 フレームアクションgotoAndPlay("シーン 1", 1) 御回答(NO.1)の補足部分に続きます。
こんにちは。 yomikomareru.swf(読み込まれるSWF)のどこかにボタンがあって,そのボタンから,メインのアニメーションを "シーン 2" に行かせたいと言うことですね,たぶん。 読み込まれたムービーからは,親の "シーン" は認識できません。 読み込まれたムービーでなくても,単に普通のムービークリップ内からでも同様で,親の "シーン" は認識できません。 ではどうするかと言うと, "シーン 1"の1フレームからの絶対フレーム数を計算して,そのシーンにgotoさせるのです。 yomikomu.exe(読み込むEXE)のシーンは,書かれているのを見る限り,15フレームあるように見えます。 絶対フレーム数で言うと16フレームが "シーン 2" の1フレームです。 ですから,yomikomareru.swf(読み込まれるSWF)のボタンに書くスクリプトは ---------------------------- on (release) { _root.gotoAndPlay(16); } ---------------------------- のようになります。 でも普通は,フレーム数など計算するのは面倒で,間違えやすいので,こうしないと思います。 それではどうするかと言うと, gotoしたいのが,"シーン 2"の1フレーム だったら,タイムラインで シーン 2"の1フレームを 選択して, 下のプロパティパネルで,左の方にある <フレームラベル> にラベル名をつけて, ボタンにはそのラベル名に goto するようなスクリプトを書きます。 もし "シーン 2"の1フレーム に label2 という名前を付けたとき, yomikomareru.swf(読み込まれるSWF)のボタンに書くスクリプトは ---------------------------- on (release) { _root.gotoAndPlay("label2"); } ---------------------------- となります。
お礼
お返事ありがとうございます。 御回答の方法でさせていただいた結果、希望するようになりました。 しかし、また新たにわからないことができました。 読み込まれたムービーからは,親の "シーン" は認識できません。 読み込まれたムービーでなくても,単に普通のムービークリップ内からでも同様で,親の "シーン" は認識できません。 ということですが、 例えば、親に複数の外部ムービーを読み込む場所がある場合、親のある場所に読み込まれた外部ムービーがまだ何も読み込まれていない親の場所に外部ムービーを読み込むにはどのような方法をとればよろしいでしょうか。今回の場合では、yomikomu.exeのシーン2レイヤー3フレーム1・15にyomikomareru2というインスタンス名が付けられ、gaibuフォルダにyomikomareru2.swfというファイルがあり、また御回答の方法をとったと仮定して、yomikomareru.swfのシーン1レイヤー2フレーム11・15にどのような記述をすれば、yomikomu.exeのシーン2レイヤー3のyomikomareru2にyomikomareru2.swfを読み込ませられますか。 もう少し詳しく理解したいのですが、教えてくださいませんか。 よろしくお願いします。
補足
動き yomikomu.exeを開く。→yomikomu.exeのシーン1フレーム6まで進み、yomikomu.exeのシーン1レイヤー2のyomikomuに読み込まれたyomikomareru.swfのフレームが6~10になる。→yomikomu.exeに読み込まれたyomikomareru.swfのレイヤー2フレーム6~10のボタンアクションによって、yomikomu.exeのシーンがシーン2にかわる。→yomikomu.exeのシーン2フレーム11まで進み、yomikomu.exeのシーン2レイヤー2のyomikomuに読み込まれたyomikomareru.swfのフレームが11~15になる。→yomikomu.exeに読み込まれたyomikomareru.swfのレイヤー2フレーム11~15のボタンアクションによって、yomikomu.exeのシーン2レイヤー3のyomikomu2にyomikomu2.swfを読み込む。
お礼
お返事ありがとうございます。 御回答の方法でさせていただいた結果、希望するようになりました。 大変お手数をおかけしましたが、親切に対応してくださりありがとうございました。