|
外部swf読み込みで無応答 初めて投稿させていただきます。
ボタン押下で外部swfファイルをロードし、 ロード完了までNowLoadingの表示をしたいと思っています。 フレームレートは12fpsで、外部swfファイルのサイズは20MB程です。
外部swfのロードはMovieClipLoader.loadClipを使用し、 MovieClipLoader.onLoadStartでNowLoading用のムービークリップを表示。 MovieClipLoader.onLoadProgressでロード状況を更新。 MovieClipLoader.onLoadCompleteでNowLoading用のムービークリップを非表示しています。
動作させたい環境は、ローカル、Web、ネットワーク共有からの実行の3つなのですが、
ローカル、ネットワーク共有からの実行、Web(キャッシュ有り)では、 MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまで 無応答状態になってしまいます。(描画がされない。ロードはできています。)
ローカル、Web(キャッシュ有り)の場合は、無応答時間が2?3秒ぐらいなのですが、 ネットワーク共有からの実行の場合は、無応答時間が長すぎて、 「ムービー内のスクリプトが原因でMacromedia Flash Playerの実行速度が遅くなってます。 このまま続けると応答しなくなります。」というメッセージが表示されてしまいます。
Web(キャッシュなし)の場合は正常にNowLoading表示されていました。
あと、ローカル、Web、ネットワーク共有からの実行ともに、 MovieClipLoader.onLoadProgressは2800回ほど呼ばれていました。 また、無応答になる場合は、 MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまでに onEnterFrameは1度も呼ばれていませんでした。(だから描画されないと思うのですが。。。)
なぜ、このような状態になってしまうのでしょうか? お力を貸してください。よろしくお願いしますm(_ _)m
↓↓↓↓ 以下ソースです。 ↓↓↓↓
stop();
////////////////////////////////////////////////////////////////////////////// // 初期化 ////////////////////////////////////////////////////////////////////////////// mcl = new MovieClipLoader(); //ムービークリップローダー作成 myListener = new Object(); // リスナーオブジェクト作成
//** mcLoading : NowLoading用のムービークリップ。ステージ上に配置してあります。 **//
this.mcLoading._visible = false; // NowLoadingを非表示にする
////////////////////////////////////////////////////////////////////////////// // リスナーオブジェクトのメソッド定義 ////////////////////////////////////////////////////////////////////////////// // onLoadStart myListener.onLoadStart = function( target_mc ) { // NowLoadingを表示する mcLoading.txtPercent.text = 0; // mcLoading.txtPercentはロード状況を%で表示するテキストフィールドです。 mcLoading.mcBar._xscale = 0; // mcLoading.mcBarはロード状況を表すバーです。 mcLoading._visible = true; }
// onLoadProgress myListener.onLoadProgress = function( target_mc, loadedBytes, totalBytes ) { // %を求めて、表示 iPercent = Math.round( ( loadedBytes / totalBytes ) * 100 ); mcLoading.txtPercent.text = iPercent; mcLoading.mcBar._xscale = iPercent; }
// onLoadComplete myListener.onLoadComplete = function( target_mc ) { // NowLoadingを非表示にする mcLoading._visible = false; }
////////////////////////////////////////////////////////////////////////////// // ムービークリップローダーにリスナーオブジェクトを設定 ////////////////////////////////////////////////////////////////////////////// mcl.addListener( myListener );
/////////////////////////////////////////////////////////////////////////////// // ボタンイベント /////////////////////////////////////////////////////////////////////////////// this.btnTest.onRelease = function() { //** mcContents : 外部swfロード用のムービークリップ。ステージ上に配置してあります。 **//
// 外部swf用ムービークリップアンロード mcl.unloadClip( mcContents ); // 外部swfロード mcl.loadClip( "hoge.swf", mcContents ); }
以上です。
|