AS3.0でのプログレスバーの制御について

このQ&Aのポイント
  • AS3.0でのプログレスバーの制御について、WebサイトのエントランスページにFlashアニメーションを設置しています。しかし、ロードの進捗状況が正しく表示されず、バーが遅れて表示されます。
  • AS3.0では、AS2.0とは異なる対処法が必要なのかもしれません。現在使用しているエフェクトライブラリやスクリプトの使用方法も影響しているかもしれません。
  • 先輩に相談したが、原因がわからず困っています。どなたかお力添えをお願いします。
回答を見る
  • ベストアンサー

AS3.0でのプログレスバーの制御について。

お世話になります。 WinXP professional Adobe Flash CS4 Action Script 3.0 という環境で作業をしています。 現在仕事でwebサイトを制作しており、そのサイトのエントランスページにFlashアニメーションを設置しました。 大きめの画像を相当数使用しswfのサイズが大きめになったため、ロードの進捗状況がわかるようにしたいと思い下記の質問↓ http://oshiete1.watch.impress.co.jp/qa5104962.html を参考にプログレスバーをタイムラインの1コマ目に設置しました。 そこまでは良かったのですが、その後実際にサーバーにUPして確認してみたところ、最初は真っ黒な画面になるだけで何も表示されず(ステージの背景色を黒にしています)ロードが80%を超えたあたりから急にバーが表示されます。 この現象に関してもgoogleなどで検索し、下記 http://blog.2inc.org/2007/05/flash.html http://okwave.jp/qa/q1505484.html を参考にムービークリップを修正してみたのですが一向に症状が改善されません。上記の質問はAS2.0での症状ですので、AS3.0では対処法が異なるということなのでしょうか? ちなみに、現在制作しているアニメーションにはflash eff 2.0というエフェクトライブラリも併用しています。加えて、アニメーションは極力スクリプトを使用せずタイムラインでほぼ完結しています。それらもプログレスバーが上手く動作しない原因でしょうか? 会社の先輩にも質問をしてみたのですが、原因がわからないとのことでしたので此方で質問をさせて頂きました。 どうかお力添えをいただければと思います。

  • 708RE
  • お礼率50% (1/2)
  • Flash
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • aspnet
  • ベストアンサー率79% (72/91)
回答No.2

FlashEffは一般的なトランジションライブラリなので、トランジション実行時、必ずその対象であるムービークリップをメモリ中に読み込んでいる必要があります。 でないと動作中にハングアップしかねないし、また、トランジションはどのようなタイミングで行われるかわからない(極端なことをいえば最初のフレームから全画像がトランジションする場合もありえます)ので、その対象である画像のリンケージプロパティにかかわらず、開始前に強制的にプリロードを発生させているのではないでしょうか? なので、FlashEffの対象画像を、別ムービーで手動プリロードし、遷移後のムービーで同一ソースファイルの画像オブジェクトをFlashEffでトランジションさせる、ということになるかと。 両者はあくまで別swfです。シーンはあくまでタイムライン編集の方便であり、内部的には一本のタイムラインとして処理されますので、シーン分けは無意味だと思います。 FlashEffの新版(v2)を持たないので、確実な検証はできませんが、Eff1や他のトランジションライブラリでは明らかにそうでした。「あらかじめmc化してプリロードしておくように」と明記されたものもあります。 Effは高価な製品で完成度も高いので、いろいろとお節介だということですね。きっと。

708RE
質問者

お礼

お礼が遅くなってしまい申し訳ございません。。 ご教示いただいたように別swfを用意する手法で無事に成功いたしました!丁寧な説明、解説どうも有難うございました。 FlashEffを使用する際は今後注意したいと思います。。本当にどうもありがとうございました!

その他の回答 (1)

  • aspnet
  • ベストアンサー率79% (72/91)
回答No.1

問題を起こしているのは、FlashEffだと思われます。 アニメーションを遅延なく実行するため、0フレーム目に、メディアデータをすべて先読みする処理をかけているのではないでしょうか。 FlashEffを使用しないムービーを作成し、2フレのウィンドウ外に先読みが必要な画像全点を配置、1フレ目でプログレスバーを動作させ、読込み完了で本swf(FlashEff使用)に遷移する方法をでいいのではないかと思います。 FlashEffの先読みは発生しますが、全点が手動プリロードされるので、遅延なく遷移できる、のでは。 外していましたらすいません。

708RE
質問者

補足

早速回答を頂きありがとうございます。 >アニメーションを遅延なく実行するため、0フレーム目に、メディアデータをすべて先読みする処理をかけているのではないでしょうか。 これに対する処理として、リンケージプロパティから重い画像やmc、FlashEffコンポーネントに対して1フレーム目での書き出しをさせないように設定し直したのですが、症状は改善しませんでした…。 >FlashEffを使用しないムービーを作成し、2フレのウィンドウ外に先読みが必要な画像全点を配置… つまりプログレスバー単体のswf(Aとします)と本編アニメーションが書き出されたswf(同B)を別に制作してA→Bへジャンプさせるという事でしょうか? もしくはシーンの追加をし、プログレスバー専用のシーンを最初に設定するという事でしょうか? 質問ばかりですみませんが、よろしくお願いいたします。

関連するQ&A

  • AS3.0でボタンにアクションを設定できませんか

    AdobeのFlashソフト(CS5)でアニメーションを作っています。 最初にボタンを設置しておいて、それをクリックすると アニメーションが始まるように作りたいんですが AS3.0だとボタンにアクションを設定しようとすると 3.0だと対応していないと出てきます。 でもAS2.0で作るとボタンを押した後、トゥイーンが動いてくれません ボタンを押して再生はあきらめたほうがいいのでしょうか?

  • AS2をAS3にしたい

    AS2で書かれたスクリプトの一部があります。下記をAS3にしたいのですが。 ちなみに、mcはインスタンス名です。  onClipEvent (load) {      pointX = 10;     pointY = 20;  }  onClipEvent (mouseMove) {       _root.mc._x = _root._xmouse + pointX;       _root.mc._y = _root._ymouse + pointY;     }

    • ベストアンサー
    • Flash
  • .asファイルのみ外部から読み込む方法

    フラッシュ暦1年未満であまり詳しくありません。 WEB制作は3年ほどです。 フラッシュのアクションスクリプト.asのみを.swfに読み込ませてWEBで閲覧できる方法があれば教えて下さい。 スクリプトに obj_as.load("######.as");と入れても無理でした。 結局なにをしたいのかと申しますと アクションスクリプトのみ外部から読み込むことができると、そのスクリプトの一部分のみクライアントで操作してもらい写真の枚数など指定できるようにしたいのです。たとえば・・・ var menu_num:Number = 9;←この部分にマクロを入れて自動更新します。。。。

    • ベストアンサー
    • Flash
  • 2つの音のボリューム制御

    質問させてください。 Flashで2つの音を鳴らしたいと考えています。 一つはタイムラインにおいて、画面と同期させて います。二つ目は常に鳴るようにサウンドオブジェクト で鳴らしています。 問題は、setVolumeで音のボリュームを制御したいの ですが、下記のように2つのサウンドオブジェクトを 作成しても、最後に設定したsetVolumeに2つの音が ボリューム指定されてしまって、別々にボリューム 制御ができません。 (下記のように、タイムラインの音は30、スクリプト 制御の音は80で設定したい。) ●タイムラインの1フレーム目のフレームアクション _root.snd = new Sound(); _root.bgmsnd = new Sound(); //タイムライン用のボリューム指定 _root.snd.attachSound("menu1"); _root.snd.setVolume(30); //スクリプト制御用のボリューム指定 _root.bgmsnd.attachSound("bgm"); _root.bgmsnd.setVolume(80); _root.bgmsnd.start(0,99999); 解決方法、おわかりの方おられますでしょうか? Flash MX 2004 Windows XP

    • ベストアンサー
    • Flash
  • flash8 professionalを使っています

    flash8 professionalを使っています flash8 professionalを使っています、わかならい事があり、質問しました。 http://www.ahcahcum-muchacha.com/ このようにロールオーバーしたらアニメーションが起こるサイトを作りたいのですが、「この場所をロールオーバーすると、ここにアニメーションが起こる」という命令のスクリプトが分からないのですが、何かアドバイスか、参考になるHPがあれば教えてください。 あと、こういったのもだったらそういう構造で作るのが効率よいのでしょうか? ネスト化とかはするものの、最終1つのムービークリップで全部のアニメーションのパターンをタイムライン上に作ってこの時はこのパターンのアニメーションを起こす、という事をスクリプトで指示して、それをシーンの中に入れてパブリッシュするのですか? flash初心者です。 aftereffectsなら割と触れるのですが、flashは、タイムラインの構造も結構違うので、どういった構造で、進めていったらよいのか知りたいです。

  • テキストのエフェクトをムービーの途中で再生させたい

    下記のURLを参考にし、文章が左から右へ表示されるように アクションスクリプトで表示させることができたのですが これをタイムラインの途中で動かすにはどのように制作したら動くのでしょうか http://www.flashiroha.com/script/textEffect/as27.html タイムライン上で何度か文書を表示させるときに使ってみたいのですが 自分ではどうにもできず困っています。 ご教授いただけると幸いです、どうぞよろしくお願い致します。

  • as3.0でのフレーム移動制御のスクリプト

    当方、FLASH cs4、as3.0で製作をしております、まだ初心者です。 以下のタイムラインを動作させようとしているのですが、どうにも行き詰まってしまいこちらに参りました。 どなたかご教授頂けないかと願っております。 どうぞ宜しくお願い致します。 flaステージ上に(A_btn)、(B_btn)、(C_btn)、(D_btn)、(C_btn)という5個のボタンインスタンスを配置しています。 オープニングと同時にA_mcの前半を再生してA_stopラベルのフレームで停止します。 (9フレーム目のasには stop(); 記述済み) その状態で(C_btn)や(D_btn)をクリックした時に、A_stopラベルのフレームからA_closeラベルのフレームに移動して A_mcの後半を再生して、A_mcが終了する(17フレーム目)と同時にB_mcを飛び越えてC_startやD_startラベルのフレームに移動しムービーを再生するには、どのフレームにどんなラベルを追加したり、スクリプトを記述すれば良いか具体的にお教え願えませんでしょうか。 同様にB_mcからC、Dを飛び越えてE_mcに移動したり、E_mcからAやBにも移動させたいです。 また、上記はタイムラインアニメですが各々のmcをswfとしてロードする場合も合わせてご教授頂けると幸いです。

  • Flash IE6でプログレスバーが表示されない

    IE6上で表示させるFlashを作成しているのですが、 最初にプログレスバーを作成し、コンテンツをロードした後でメインの画面を表示させようとしています。 ところがFirefoxではうまく表示されるのですが、 IE6,7で行うと最初のプログレスバー等の画像が一切表示されず、 いきなりメインの画面から始まってしまいます。 コードはAS3で以下のようになっています。 1フレーム目: 何も記述せず 2フレーム目: var percentNo:int; var bInfo:LoaderInfo= root.loaderInfo; percentNo = Math.ceil(bInfo.bytesLoaded /bInfo.bytesTotal * 100); //画面のテキストフィールドに%を表示 percent_text.text = ""+percentNo + "%"; //フレーム遷移 if(percentNo >=100){   gotoAndPlay(3); //メインフレームへ }else{ gotoAndPlay(1); //1フレームからループ } 環境は ・Flash CS3 ・Flash Player9 です。 何か解決方法をご存知の方がいらっしゃればご教授の程をよろしくお願いします。

    • ベストアンサー
    • Flash
  • AS3での外部swfの制御

    こんにちは。 Flashのコードについて質問させていただきます。 AS3で外部swfを読み込み、制御したいのですが上手くいきません。 ここでいう外部swfはflashで作ったものではなく、aftereffectsでswfで書き出したものです。 var swf:MovieClip; var loader:Loader = new Loader(); var newSWFRequest:URLRequest = new URLRequest("swfs/" + "test" + ".swf"); loader.load(newSWFRequest); addChild(loader); 上記コードでswfを表示+再生は出来ます。 更に、swfを停止、再再生、逆再生などしたいのですが、可能でしょうか? そもそもこのswfにはタイムラインという概念が存在しないので微妙ですが。。。 swf = new MovieClip(); swf .stop(); とか書き足せば、 TypeError: Error #1034: 強制型変換に失敗しました。flash.display::AVM1Movie@231c04a1 を flash.display.MovieClip に変換できません。 が出ます。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 特定のmcのフレームにきたときメインタイムライン制御

    AS初心者です。 今、メインタイムラインに配置したmc"main_mc"内のmc”mc1”の、 特定のフレームに来たとき メインタイムラインのフレーム移動をする、というスクリプトを書きたいのですが うまい行かずに困っています。 mc"mC1"のフレームアクションに _root.gotoAndPlay(20); と書きましたが、うまくいきません。 なんででんしょうか。。 もしお分かりのかたがいたらお教えいただけると幸いです 初歩的質問ですみません。。。 mac macbook os 10.4.11 flash cs4を使用しています。