• ベストアンサー

FLASHでできあがったHTMLとswfで表示が違う。

Flash5を使用して、swfを作成しております。 1フレーム目 アクション;gotoAndPlay(5); 5フレーム目 アクション;this.stop(); F12を押して、パブリッシュして作成されたHTMLファイルをみてみると、なぜか3フレーム目で止まってしまっています。 (3フレーム目のアクションは「this.stop();」) 作成されたswfファイルをダブルクリックで直接みると、ちゃんと5フレーム目になっているのですが…。 3フレーム目の「this.stop();」を削除すると、5フレーム目にいきますが、今度は、7フレーム目、9フレーム目と指定したときに、5フレーム目で止まってしまいます。 swfファイルはきちんと動作しているので、間違ってないのかなあ?と思うのですが。 やりたいことは、基本になるFlashファイルがあり、それをコピーして、コピーしたファイルは、3フレーム目からスタート、5フレーム目からスタート…としたいのです。 例; basic.fla   ; 2フレーム目からスタート basic_02.fla ; 3フレーム目からスタート basic_03.fla ; 5フレーム目からスタート basic_04.fla ; 7フレーム目からスタート          :          : またパブリッシュしたHTMLファイルを表示すると、1フレーム目から、3フレーム目へ飛んでいるわけではなく、1>2>3と移動しているようです。(一瞬チラっと見える) そうではなく、1>3としたい場合はどうしたらいいのでしょうか?

  • w-inty
  • お礼率72% (1169/1618)

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

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

普通,ローカルPCで起こることはほとんどありませんが, ネット上の SWF で, ロードされていないフレームへの無理なジャンプをしようとしたときに起こる現象だと思います。 つまり フレーム5 までロードされていないかもしれない状態のフレーム1で, いきなり gotoAndPlay(5) などをするので, フレーム5 まで一気にたどり着けずに失速停止してしまうパターンです。 ローカルPCでなぜそれが起こるのかはよくわかりませんが, ネット上にアップすると, 無理なジャンプをしようとしたとき,まず普通に起こる失速現象だと思うので, 今のままではどっち道使えない状態だと思います。 対処するには, いわゆるムービーのロード待ち 「NowLoading...」 のようなしくみが必要です。 Flash 5 の場合, ムービークリップの onClipEvent (enterFrame) {} を使ってロード状態を監視するのが普通です。 簡易的な「NowLoading...」のようなものの作成方法を説明します。 フレーム1 のステージ上に, 「load_txt」 という変数名を付けた ダイナミックテキスト を用意し, その変数名「load_txt」の テキストフィールド を ムービークリップに変換 します。 そして, その ムービークリップ を選択した状態で, そのムービークリップ自体に次のような スクリプト を書きます(コピペ可能)。 // このムービークリップが表示されたときに実行 onClipEvent (load) { // _root の再生を停止 _root.stop(); } // 1フレーム進む時間ことに毎回実行 onClipEvent (enterFrame) { // ロードされたパーセンテージを変数 loaded に代入 loaded = Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100); // テキストに表示 this.load_txt = loaded+"%ロード完了"; // もし 100%ロードが完了したら if (loaded>=100) { // _root を 5 フレームより再生(★ 5 は書き替える) _root.gotoAndPlay(5); // このムービークリップを深度1000辺り(適当)に移動 this.swapDepths(1000); // このムービークリップを削除 this.removeMovieClip(); } } こうすると, ムービー全体のロード完了後に gotoAndPlay(5); するので, 途中で落下しなくなると思います。 (「NowLoading..」という文字自体はあってもなくても良いですし, あった方が良いと思う場合はムービークリップの中などに適当に書いてください。) ※ローカルPC内の通常表示では   このテキストはおそらく見えないか見えても一瞬です。   ネットにアップするとロードしたパーセンテージが   上がって行くのが見えるかもしれません。   また「制御」→「ムービープレビュー」の   「表示」→「ストリーミングを表示」辺りで   確認できると思います。 参考図↓ 見えない場合は OKWave よりアクセスしてください。 http://okwave.jp/qa4527303.html

w-inty
質問者

お礼

回答ありがとうございます。 教えていただいた方法で、やりたいことができました。 が!別の問題が発生しました。 実は、こういうことをしています。 basic.fla   2フレーム目;メニュー1が押された状態でグレーアウト(メニュー2/3は使用可) basic_02.fla 3フレーム目;メニュー2が押された状態でグレーアウト(メニュー1/3は使用可) basic_03.fla 5フレーム目;メニュー3が押された状態でグレーアウト(メニュー1/2は使用可) 例えば、basic_03を開いたときに、メニュー3が押された状態で開きます。 ここはこれでいいのですが、その中でメニュー1を押したときに、また、5フレーム目へいってしまうのです。 (そうかいてあるのだから当たり前ですが。) これを回避するためにはどうしたらいいでしょうか? 変数等を組み合わせてうまくやるしかないでしょうか?

その他の回答 (1)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

よく陥る罠だと思うけど 1frame目のそのscriptの後にscript自体を止める物を入れてごらん。 returnだかstopだかだったと思うけどちょっと記憶が古いので忘れた・・・ ただそのgotoを呼んだ後もscriptを続行しようとしていて、gotoと本来の続行処理が2つ現れていると考えたら良いよ。 確かそうだった筈・・・

w-inty
質問者

お礼

回答ありがとうございます。 1frame目のアクションスクリプトを gotoAndPlay(5); this.stop(); としてみたところ、意図しないところで止まってしまいました。

関連するQ&A

  • 2つのSWFを連続再生する方法を教えてください。

    2つのSWFを連続再生する方法を教えてください。 ひとつのswfファイルをつくって(以下1.swf) それを、別のswfからよみこまして、その続きを再生したいと考えております。(2.swf) このとき 「1.swf」の1フレームにアクションで ===== loadMovieNum("1.swf", 0); gotoAndPlay("start"); ===== として、 2フレーム目にラベル「start」をつけているのですが 「2.swf」を実行した場合に、「1.swf」は読み込みますが、 その後、「1.swf」を繰り返してしまいます。 また、繰り返すので、「1.swf」のラストフレームに「stop();」 を入れると当然のごとく止まってしまい、 「2.swf」の2フレーム以降を再生してくれません。。 非常に初歩的な問題だと思うのですが、 「2.swf」の1フレーム目にはなんというアクションスクリプトを記載すればいいのか、 教えていただけないでしょうか? よろしくお願いいたします。

  • FlashとHTMLの階層が違うために表示できない(と思われる)。

    複数のswfファイルをランダム表示するために、ひとつのswfファイルをベースにして、そこに以下のようなアクションスクリプトを記述することによって動作させることができました。 //1~3の整数の乱数を,変数 ransuu にセット ransuu = Math.floor(Math.random()*13)+1; //ムービー内に ransuu+".swf" をロード this.loadMovie(ransuu+".swf"); しかし、上記のアクションスクリプトは、ベースとなるswfファイルと、それを設置するHTMLと、ランダム表示させるswfファイル群が全て同じ階層にあるということを前提にして書かれているようです。従って、HTMLをひとつ上の階層に設置し、そこからベースとなるswfファイルを設置しても、表示されません。FlashとHTMLの階層が違う場合には、どのように上記のアクションスクリプトを変更すればよいのかを教えてください。

    • ベストアンサー
    • Flash
  • FLASHで外部swfファイルを読み込み表示するには

    FLASHで外部swfファイルを読み込み表示できるということを知り、下記の方法で行ったのですがうまくいきません。どのような方法をとれば、うまくいくでしょうか。使用ソフトは、FLASHMXです。よろしくお願いします。 1. 読み込むswfファイル (2.swf) を用意する。 2. 読み込んで再生するためのプロジェクタ (1.exe) を用意する。 3. "1.exe"と"2.swf"を同じ階層に保存する。 ※"1.exe"の作成方法  ・使用するレイヤーは、起動したときに用意されている1つだけで、フレーム1に"loadMovie"を埋め込み、URLには"2.swf"、場所はレベルで"1"を選択する。  ・"1.fla"と名前を付けて保存し、プロジェクタ"1.exe"としてパブリッシュする。 なお、"1.exe"と"2.swf"のステージサイズ及びフレームレートは同じに設定しています。

  • FLASHのswfの変換

    こんにちは FLASH4を使っているのですが***.swfファイルは ***.flaには変換できないのでしょうか? swfファイルにプロテクトかけるにはどうすればいいでしょうか? またswfファイルにプロテクトがかかっている場合は 絶対にそのプロテクトはとれないのでしょうか?

  • Flashのループが止まりません。。

    はじめまして。初めて投稿させていただきます。 よろしくおねがいしますm(_)m フラッシュ初心者なのですが、ループが止まらなくて困っています。。 通常のswfファイルですと、最後のフレームにアクションスクリプトで this.stop();でリピートがなくなると思います。 今回は、そのthis.stop();でリピートさせなくした、ppp.swfファイルを、おおもとのaaa.swfファイルから xmlファイルを読み込んで、外部から引っ張っています。 階層1 aaa.swf test.xml(←ここからimageフォルダにあるファイルを読み込むように記述しています。) imageフォルダ   Lppp.swf    おそらく、this.stop();ということがaaa.swfと競合??してしまって使えないのかと思っています。 読み込みは正常に行えており、動作するのですが、どうしてもリピートしてしまいます。 正しい書き方が調べてもわからず、行き詰まってしまいました。 期限が迫っており、焦っているのですが、どなたかお助けいただけませんでしょうか。。 ご教授よろしくお願い致します。

    • ベストアンサー
    • Flash
  • HTMLからFlashで作成したswfファイルを起動して変数を渡す方法

    HTMLからFlashで作成したswfファイルを起動して変数を渡す方法についてです。 その際、フレームで定義した領域にswfを読み込みたいのですが、その場合、どのようにすれば変数をswfに渡すことができるでしょうか? FlashVars属性をobjectタグやembedタグに追加するようにマニュアルには記載がありますが、フレーム内にswfを読み込む場合の変数の渡し方がわかりません。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash CS4 + ActionScript 3.0 で swf

    Flash CS4 + ActionScript 3.0 で swf ファイルを作成しました。 メインのタイムラインの 1 フレーム目に ActionScript で stop(); を 指定したのですが、swf 単体で再生(Adobe Flash Player 10で再生)して 確認したところでは問題なく 1 フレーム目で停止しますが、 swf を HTML に配置してブラウザで確認したところ、 ロード時にはメインのタイムラインがすべて再生されてしまいます。 これについての対処法はあるのでしょうか? 自分なりの調べて見つけた方法としては、 ↓こんな感じだったのですが、根本解決ではない気がするので、  何か良い方法があれば、教えてください。よろしくお願いします。 ・外部ファイルを読み込むだけの swf を作って、  実際に再生したい swf を UILoader に読み込む ・全部ムービークリップに入れてしまって、  メインのタイムラインには、そのムービークリップだけ配置する

    • ベストアンサー
    • Flash
  • FLASHで作ったswfついて

    困ってしまいました。 以前作ったFLASHムービーをHP上に立ち上げていたのですが、先日PCの調子が悪くOSを入れ直した際にflaデータを消してしまいました。 HP上からswfをダウンして再度FLASHで読み込みしたんですが、各レイヤーはフレーム化されてしまい、又音が読み込めません。これはどうしようもありませんか? 少なくても、画像はあきらめても音を取り出す方法はないでしょうか?(FLASHに読み込む)

  • 2回目以降の訪問でFlashをSkipさせる方法について

    表題の方法について、以前の質問や他サイトを参考にSharedObjectというものを 使用するという事は分かったのですが、以下の方法をとったところ、初めての訪問でも Movieが再生されず、最終フレームで止まったままとなってしまいます。 どこが間違っているのか皆目検討が尽きません。 今のFlaファイルは ■先頭フレーム:ラベル名「startMovie」 ■2フレーム目 フレームActionとして var my_so = SharedObject.getLocal("MyCookie"); if (my_so.data.haveVisited != 1) { my_so.data.haveVisited = 1; my_so.flush(); this.gotoAndPlay("startMovie"); } else { this.gotoAndStop("endMovie"); } ■最終フレーム:ラベル名「endMovie」 ボタンのオブジェクトActionとして on (release) { this.gotoAndPlay("startMovie"); } フレームActionとして this.stop(); となっています。 どうしたら初めての訪問でMovieが再生され、2度目の場合は 最終フレームでSTOP、REPLAYボタンで再生、という風にできるでしょうか。 どうかアドバイスの程宜しくお願い致します。

  • 外部swfの読込について

    1枚のFlashに二つの外部swfを読み込む方法を教えて下さい。 今参考書を見ながらやってみたのですが外部ファイルが読み込まれていないようで 書き出したswfファイルには何も表示されません。 試した方法ですが・・・ 外部swfファイル読込用ムービークリップを作成、 オブジェクトアクションを挿入 --------------------------------- onClipEvent (load) { function Load (file) {  this.loadMovie (file);   } } --------------------------------- フレームを作成し下記アクション挿入 --------------------------------- contents_mc.Load("about.swf") --------------------------------- 使用ソフトはFlash5です。 どうぞ宜しくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう