• ベストアンサー

しばらく真っ白な画面になってしまいます。

mx2004です 2メガほどあるswfに読み込み画面を作りました。 他のサイトを見ると、すぐにローディング中と出るのに、私が作ったフラッシュだけ、20秒くらい真っ白い表示で、70パーセントぐらいからようやく%表示が出てきます。それからは普通に100まで増えていきます。 最初に真っ白な画面が続いてしまうのはなぜでしょう、何か考えられる原因はありますか? 読み込み中ということを、見ている人にわかってもらいたいです

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.3

おそらく、フレーム1に大量のデータが書き出されていて読み込みに時間がかかり、続く Now Loading アニメがなかなか始まらなくなっているのだと思います。 サウンドやムービークリップを、attachSound や attachMovie で動的に挿入していませんでしょうか。 スクリプトで動的にインスタンスを挿入するには、「リンケージ」という設定が必要です。 リンケージを設定したシンボルがある場合は、「リンケージプロパティ」を確認してみてください。「最初のフレームに書き出し」にチェックが入っていませんでしょうか? これにチェックが入っていると、シンボルのデータが全てフレーム1に書き出され、フレーム1の容量が大きくなってしまいます。特に、サウンドシンボルやビットマップ系画像を使ったシンボルは音や画像の巨大なデータがフレーム1に書き出されることになりますので、ご注意ください。 「最初のフレームに書き出し」は、「 ActionScript に書き出し」を選んだ時に同時にチェックが入るようになっています。チェックが入っている場合は、チェックを外してください。 「最初のフレームに書き出し」を選ばなかったシンボルはムービーに書き出されず、スクリプトで挿入しようとしても、シンボルが未定義扱いになって失敗してしまいます。 しかし、シンボルのインスタンスをタイムラインを使って挿入してあれば、シンボルのデータは、そのインスタンスが初めてステージに登場するフレームに書き出されます。 (インスタンスを複数のフレームに配置していても、シンボルのデータが書き出されるのは1回だけです) 例えば Now Loading アニメをフレーム3まで作っているのなら、フレーム4にサウンドを挿入すれば、サウンドシンボルのデータはフレーム4に書き出され、フレーム1の容量を軽くすることができます。 ただ、これではフレーム4が再生された時に音が鳴ってしまいますから、「同期:」のリストから「ストップ」を選んで、鳴らないようにしておきます。 つまり、シンボルのデータをフレーム1以外に書き出すために、どこか別のフレームにダミーのインスタンスを配置し、普段はこれが再生されないようにしておくということです。 attachMovie で動的に挿入するために「リンケージ」を設定したムービークリップシンボルが多数あって、これらが全てフレーム1に書き出されては困る場合は、同じ要領で、フレーム1以外のフレームに書き出されるようにしてはいかがでしょう。 Now Loading アニメの次のフレームをシンボルを書き出すための専用のフレームにし、ここにシンボルをまとめて配置しておくと、「リンケージ」を設定したシンボルのデータを一括してこのフレームで読み込めます。 例えば Now Loading アニメを2フレームで作ったとすると、フレーム3をシンボルの書き出し用に充て、リンケージを設定したシンボル全てのインスタンスをここにダミーとして配置し、実際のムービーはフレーム4から作ります。 ムービーの読み込みが完了したら、フレーム3を飛ばしてフレーム4に行くようにすれば、ダミーを非表示にする手間を省くことができます。 ------------------------------------------------------ ところで、Now Loading のスクリプトですが。 プログレスバーのインスタンス名を prog_bar だとすると、フレーム1を空白にし、フレーム2に  //完了率の算出  loaded = _root.getBytesLoaded();  total = _root.getBytesTotal();  per = Math.floor( loaded / total * 100 );  //プログレスバーの描画  prog_bar._xscale = per;  //読み込み完了を待つ  if( per < 100 )  {   gotoAndPlay( _currentframe - 1 );  }  //完了したらタイトル画面を表示  else  {   gotoAndPlay( "title" );  } (↑各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください) とすれば、スクリプトが1箇所にまとまります。 fscommand は一般的にはスタンドアロンプレイヤー( swf ファイルを直接立ち上げた時に起動するプレイヤー)に対する指示であって、HTML ページに組み込んで表示する時は意味を持ちません。 例えば  fscommand( "fullscreen" , "true" ); これはフルスクリーンで再生するという意味ですが、HTML で再生する swf ファイルにこのスクリプトを組み込んでも、フルスクリーンにはなりません。 しかし、このスクリプトを組み込んだ swf ファイルをダブルクリックして再生してみると、フルスクリーン表示になります。 showmenu も同様で、fscommand で指定したからといって右クリックのメニューが2項目だけに限定されるわけではありません。 メニューの表示を制御するには HTML のタグで指定するか、  Stage.showMenu = false; というスクリプトをどこかで実行してください。 ちなみに、fscommand は本来は JavaScript や他のアプリケーションと Flash を連携させるための仲介役として用意されているもので、他にも様々な使い方があります。 この話は長くなりますので、またの機会に。

miku2
質問者

お礼

ライブラリで、リンケージプロパティを見てみたら、なんと20個ほどのムービークリップが「最初のフレームに書き出し」になってました!! ほとんどのムービークリップをアクションスクリプトで呼び出すようにしてたので・・ これじゃあ、最初に読み込むのに時間がかかりすぎますよね。納得です! そのチェックを全て外し、おっしゃるように3フレーム目にそのインスタンスをダミーで置いておきました。 今、サーバーにアップしたところですが、ローディングが1パーセントから表示されてます!!!感激です! 丁寧に説明していただいたので、理解ができ、とても勉強になりました。そしてすごく助かりました。ありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

noname#35109
noname#35109
回答No.2

前に書いていらしたスクリプトですが, 不可解な部分が多く,少しの書き直しをどうすれば良いか考えているうちに今日に至ってしまいました。 結構書き換えてもいいのですね。 >> ☆1フレーム目 >> fscommand("showmenu", "false"); >> fscommand("allowscale", "false"); >> fscommand("fullscreen", "false"); >> flag=0; ここは,fscommand("showmenu", "false");以外,意味不明なのでノーコメント。 2フレーム目,3フレーム目は,ループしているのにさらにenterFrameを使っているところがよくわかりません。 もう少しシンプルに,MCの中だけにスクリプトを書いてみます。 元は, ------------------------------------------ onClipEvent (enterFrame) { _xscale=(_root.parcent/100)*100; } ------------------------------------------ こう書かれているMCを以下のように書き換え↓ ------------------------------------------ onClipEvent (load) { _root.stop(); } onClipEvent (enterFrame) { _root.parcent = int((_root.getBytesLoaded()/_root.getBytesTotal())*100); _xscale = (_root.parcent/100)*100; if (_root.getBytesLoaded()>=_root.getBytesTotal()) { _root.gotoAndPlay("title"); } } ---------------------------------------------- なるべく元のままのスクリプトを残しています。 つまり,これで行くと2フレーム目3フレーム目のスクリプトは一切いりません。 このMCのスクリプトだけでローディング画面を制御するのです。 一応,自サイトにUPして実験してみましたがうまく行きましたよ。

miku2
質問者

お礼

いろいろ考えていただいてありがとうございました。 一番の原因は、ムービークリップのリンケージの設定を「最初のフレームに書き出し」していたことでした。 ですが、スクリプトのおかしいところを指摘していただき勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • ryanan
  • ベストアンサー率66% (2/3)
回答No.1

前回の質問についてなのですが >1~3フレームに、プログレスバーを設置~ とありますがこれは1フレーム目に設置して 2,3フレームは空白フレームになってますか? またダイナミックテキストも同じようになっているでしょうか? URL等を教えてもらえればよいのですが…。

miku2
質問者

お礼

いろいろ考えていただいてありがとうございました。

miku2
質問者

補足

1、2、3とキーフレームで区切ってないレイヤーにプログレスバーは置いてあります。 アクションスクリプト用のレイヤーは1,2,3と区切ってあります。 私は初歩的なミスをすることが多いので、たぶん何かが間違ってるのだと思いますが、調べてもわからないのでお願いします(><)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Flashのローディング画面の作成

    DL待ちのためにFlashのローディング待ちのswfを作成したいのですが、 ローディングが完了したら、本編を表示するというものです。 この場合、ローディング用のswfと本編のswfを同じにすることは可能なのでしょうか? (1swfファイルで完結) 普通に考えたら別々のファイルでないと、 swfファイルを全部DLしないことには、 ローディング画面もでないと思うのですが。 サンプルflaなどを見ると、1swfファイルなのが多いので。

    • ベストアンサー
    • Flash
  • 外部swfを読み込む方法

    勘違いして他のジャンルのほうに書き込んでいましたので、投稿し直します; 過去の質問を検索してみたのですが載っていなかったので質問させて下さい。 使っているソフトは「Macromedia Flash MX」です。 flashで簡単なホームページを作り、ボタンを押すと同じファイル内のミニゲーム(ジグソーパズルやブロック崩しなど)を読み込む、というものを作っています。 flash初心者なものですから、 ↓こちらのサイトを見ながら、ほぼ同じように作ってみました。 http://flash.webkun.org/index.html ミニゲームのswfをswf(ホームページ)の中に読み込むことは出来たのですが、ミニゲームをクリアした時に表示されるはずのメッセージ画面が出ないのです。 ミニゲームを単体でプレイした時にはちゃんと出るのですが・・・。 複雑なswfをリンクするのは諦めたほうが良いのでしょうか? swfの中に読み込んだことが原因で表示されないのなら、他の方法を考えたいと思います(思いつくか分かりませんが;;) ずっと考えていましたがどうしても分かりません・・・。 説明も下手ですみませんが、どうぞよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASH MX →CD-ROMで立ち上がりが遅くなる

    FLASH MXで、ムービー(MPG)を取り込んだものを パブリッシュしてhtmlに載せたものを作成したのですが、 CD-ROMに保存してCD-ROMから見ると 立ち上がりがとても遅くなってしまいました。 FLASHの頭にローディングのスクリプトを書いているのですが、 ローディング中の画面も表示されず、ブラウザの外枠のみ 表示された状態でしばらく待たなくてはいけません。 何種類かのOSで見たのですが、皆遅くなりました。 解消方法をご存知の方、どうかよろしくお願いします。 普通にPC上に置いてあるファイルの立ち上がりには問題ありませんでした。

  • ヘッダのFlash非表示

    おちゃのこネットのサービスを利用して サイトを作成中ですが、ヘッダにFlashを組み込んだロゴをオリジナルで作成しアップしているのですが表示されません。 サンプル管理画面でswfファイルを指定するときちんと 表示されますが、実際のサイトの管理画面からではswfファイルではアップできません。 私は、Flashの素材を作って管理会社に任せてレイアウトしてもらっているので、その管理画面を直接はいじれないので良く分かりませんが、その人はswfではなくflaなら開くと言っています。 普通はswfかと思いますが、念のためflaファイルも納品しました。 IEの関係で開かないのか、おちゃのこネットの問題かが良く分かりませんが、こちらで出来ることはしたいのですが、どのような原因が考えれれるでしょうか?

  • ゲーム説明画面の表示は何秒がベストか

    VRゲームを作ってます。 ゲームの説明画面について 背景は無地で、単純な内容で、20文字くらいだと、何秒ほど表示させるのが、適切でしょうか?というか、普通のゲームって、何秒くらいでしたっけ? ローディング画面に、説明画面を差し込もうと思っています。

  • ロード画面のswfは別に作るのですか?

    一般的にFlashサイトというのは ロード画面のswfと、サイト内容のswfを別に作っているのでしょうか? ロード画面をサイト内容のswfに組み込んでしまうと 読み込みが遅くなるという記事を見た覚えがあるのですが その原理がイマイチ解りません。 「ロード画面のswfにサイト内容のswfを読み込む」のと 「サイト内容のswfにロード画面を組み込んでしまう」のとでは どういった違い・利点があるのか教えて頂きたいです。 宜しくお願いします。

  • Swishについて

    Flash Movieを今、作っているのですが・・・ ソフトはSwishです。 書き出しでswfにしてHP上にアップするとローディング画面が表示されないのです。 サンプルを参考にしながら作ったので間違ってるかもしれません。 詳しく教えてくれる方がいたらよろしくお願いします。 後、swfにするとどうしても音楽と画面がずれてしまいます。 Swishで再生すると大丈夫なんですが・・・。 何か問題があるのでしょうか? そしてもう一つ・・・。 私はホームページビルダーを使っているのですが、Flashを挿入すると、画面のサイズが変わってしまいます。 これは自分が元々SWISHで設定した大きさに引き伸ばしても平気ですか?表示されなくなったりとかはありませんか? お暇な方がいましたら、回答宜しくお願いします。

  • ローディングについて

    フラッシュのローディングを最近みかけませんが、ムービーの一部をローディングにあててローディングとはっきり出さないのが常識になっているのでしょうか。 勉強不足でわからないのですが、たとえばローディングという文字の繰り返しムービーではなく普通のムービーにしているということでしょうが。でもその調整の仕方を教えてください。swfがローディング中に繰り返しなしで再生されるとどうやって計ればいいですか。 どこかで見るウインドウかメニューがあれば教えてください。

  • 『ロード中...』画面作成上手くいかず。。

    お世話になっております。 フラッシュ2004向けの本を見ながら、 ローディング画面の作成しました。 (ただ、手元の使用ソフトはMX PRO 2004・WIN-XP) プレビューしてみると、ロード中の点々が一度表示されましたが、 その後は、真っ白になり、メインのものが出てきません。 一応、シーンのパネル上では、『loading』が上に来て、 その下に『メイン』があります。 JavaScriptの記述も、そっくりそのまま入力したのですが。。 すみません、この場合、何の原因が考えられますでしょうか? どうか宜しくお願い申し上げます。 追記: 手元のソフトがMX PRO 2004だからなのか、 ターゲットマークを、Wクリックして 『_root』を選択すると、記述箇所には 『this』と出てきてしまいます。 それでも真っ白でした。

    • ベストアンサー
    • Flash
  • 2つのswfファイルをつなげている場合の一括ローディング方法

    お世話になります。 この質問の下の質問で、外部JPGファイル読み込みのローディング方法を質問しておられますが、そこを読んでも、外部swfファイル読み込みの際のローディング方法に応用することが出来ませんでした。 700Kのswfの最後のフレームに、 loadMovieNum("img/next.swf", 0); として、500kのnext.swfファイルとつなげています。 最初のswfファイルの1シーン目で、2つのswfを全て読み込み、再生時のつながりをスムーズにしたいと考えています。 最初のswfの1シーン目に、 ローディングオブジェクトを置き、 onClipEvent (load) { _root.stop(); par = 0; bar._xscale = 1; } onClipEvent (enterFrame) { par = parseInt((_root.getBytesLoaded() / _root.getBytesTotal()) * 100); if (par == 0) { par = 1; } else if (par >= 100) { par = 100; _root.gotoAndPlay("start"); } bar._xscale = par; } ローディングすると、フレームラベル「start」 に飛び、 そのフレームに置いているオブジェクトに onClipEvent (load) { par = 100; bar._xscale = 100; } onClipEvent (enterFrame) { _alpha -= 5; } を書き込んでいます。 そして、2シーン目に飛び、 2シーン目の最後のフレームに、 loadMovieNum("img/next.swf", 0); を置いてつなげています。 FLASH本を数冊持っているのですが、2つのswfを 同時にローディングする方法が載っておらず、 こちらに質問を書かせていただきました。 もしかしたらこの質問の下質問JEPファイルの ローディングと内容がかぶってるかもしれませんが、 よろしくお願い致します。 【制作環境】 Win XP FLAS MX

    • ベストアンサー
    • Flash