トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     外部swf読み込みで無応答
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
Åê¹ÆNo.7236
投稿日時: 2004-5-12 14:33
外部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 );
}

以上です。
野中文雄
Åê¹ÆNo.7238
投稿日時: 2004-5-12 15:01
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 外部swf読み込みで無応答
「MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまで無応答状態」というのは、MovieClip.onLoadProgressイベントが発生しないということでしょうか? ローカルでは発生しないという問題が確認されています(他に[Flash’s New MovieClipLoader Class]参照)。
引用:
kz-wingさんは書きました:
外部swfのロードはMovieClipLoader.loadClipを使用し、
MovieClipLoader.onLoadStartでNowLoading用のムービークリップを表示。
MovieClipLoader.onLoadProgressでロード状況を更新。
MovieClipLoader.onLoadCompleteでNowLoading用のムービークリップを非表示しています。
...
ローカル、ネットワーク共有からの実行、Web(キャッシュ有り)では、
MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまで
無応答状態になってしまいます。(描画がされない。ロードはできています。)


----------------
 

ゲスト
Åê¹ÆNo.7239
投稿日時: 2004-5-12 15:11
Re: 外部swf読み込みで無応答
レスありがとうございます。

MovieClipLoader.onLoadProgressをカウントして表示させてみたところ、
2800回ほど呼ばれていました。(回数はどうでもいいかもしれないですが。。。)

ローカル、Web、ネットワーク共有からの実行ともにMovieClipLoader.onLoadProgressは呼ばれていました。

よろしくお願いしますm(_ _)m
ゲスト
Åê¹ÆNo.7241
投稿日時: 2004-5-12 15:34
Re: 外部swf読み込みで無応答
追記します。

デバッガを通すと、MovieClipLoader.onLoadProgressは呼ばれませんでした。
どういうことなんでしょう??
ゲスト
Åê¹ÆNo.7277
投稿日時: 2004-5-14 10:29
Re: 外部swf読み込みで無応答
ローカル、ネットワーク共有からの実行で、
MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまで
描画がされないため、
setInterval関数を用いて強制描画(あまりしたくないのですが。。。)してみようと思い、以下のように修正してみましたが、描画されませんでした。
タイマ関数(myTimer)の呼出回数をカウントしてみましたが、呼ばれていませんでした。

やり方がおかしいのでしょうか?
それともMovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまでは何もできないのでしょうか?
どうかお力を貸してください。


引用:

//////////////////////////////////////////////////////////////////////////////
// 初期化
//////////////////////////////////////////////////////////////////////////////
mcl = new MovieClipLoader(); //ムービークリップローダー作成
myListener = new Object(); // リスナーオブジェクト作成

var nTimerCnt = 0; // タイマ関数呼び出しカウント用 ←追加
var nIntervalID; // setInterval識別番号 ←追加


引用:

// onLoadComplete
myListener.onLoadComplete = function( target_mc )
{
// setIntervalクリア
clearInterval(nIntervalID); // ←追加
// NowLoadingを非表示にする
mcLoading._visible = false;
}


引用:

///////////////////////////////////////////////////////////////////////////////
// ボタンイベント
///////////////////////////////////////////////////////////////////////////////
this.btnTest.onRelease = function()
{
//** mcContents : 外部swfロード用のムービークリップ。ステージ上に配置してあります。 **//

// 外部swf用ムービークリップアンロード
mcl.unloadClip( mcContents );

// カウント初期化
//** txtTimerCnt: タイマ関数呼び出し回数表示用テキストフィールド(ダイナミック)。ステージ上に配置してあります。 **//
nTimerCnt = 0; // ←追加
txtTimerCnt.text = nTimerCnt; // ←追加

// setInterval起動
nIntervalID = setInterval(myTimer,50); // ←追加

// 外部swfロード
mcl.loadClip( "hoge.swf", mcContents );
}


引用:

// タイマ関数 ↓追加
function myTimer()
{
nTimerCnt = nTimerCnt + 1;
txtTimerCnt.text = nTimerCnt; // 呼び出された回数を表示
updateAfterEvent();
}

野中文雄
Åê¹ÆNo.7283
投稿日時: 2004-5-14 12:15
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 外部swf読み込みで無応答
先に回答いたしましたとおり、何を問題とされているのかわかりかねます。

いつ何の「描画がされない」のでしょう? プログレスバーのアニメーションですか? それとも、setInterval()に指定したコールバック関数(myTimer())が、呼出されないことを問題とされているのですか?
引用:
kz-wingさんは書きました:
ローカル、ネットワーク共有からの実行で、
MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまで
描画がされないため、
setInterval関数を用いて強制描画(あまりしたくないのですが。。。)してみようと思い、以下のように修正してみましたが、描画されませんでした。
タイマ関数(myTimer)の呼出回数をカウントしてみましたが、呼ばれていませんでした。


----------------
 

ゲスト
Åê¹ÆNo.7286
投稿日時: 2004-5-14 13:32
Re: 外部swf読み込みで無応答
野中様、問題点がわかりにくくて申し訳ございません。m(_ _)m

問題点は、
MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまで
の間で描画が更新されないということです。

引用:

先に回答いたしましたとおり、何を問題とされているのかわかりかねます。


MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまでの間で、
プログレスバーのアニメーションも含めてムービー全体が描画されません。
正確にはブラウザ自体(IE6.0 SP1)が止まってしまいます。
(なので無応答という表現をさせていただきました)。

setInterval()を用いた事に関しましては、なんとか描画させようと思い、試してみたことを書かせていただきました。
その結果をみて、MovieClipLoader.onLoadStartからMovieClipLoader.onLoadCompleteまでの間は何も制御できないのかな?と思いました。

引用:

いつ何の「描画がされない」のでしょう? プログレスバーのアニメーションですか? それとも、setInterval()に指定したコールバック関数(myTimer())が、呼出されないことを問題とされているのですか?


まだわかりにくい点があるかもしれませんが、よろしくお願いしますm(_ _)m
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops