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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     MovieClipLoaderで画像をカウントする
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
gomomo
Åê¹ÆNo.26649
投稿日時: 2006-7-5 0:46
新米
居住地: 東京
投稿: 16
使用環境:
WinXP PRO
Flash CS3
MovieClipLoaderで画像をカウントする
ご無沙汰しております
また困った事があったのでお知恵を借りたいと思いまして^^;
お願いいたします。

MovieClipLoaderを使ってステージに配置したMCにjpg画像を読み込みたいのですが、読み込む画像の枚数が1枚から5枚と変わります。
枚数を記述したテキストを読み込んだり、フラッシュ自体を編集しないで、フラッシュ自体に画像をカウントさせたいと思っています。
作った物をローカルで試してたうちはうまくいってたのですがUPしようと思い、読み込むファイルをサーバー上のものにしたらうまくいきません。

まず、5個のMCを配置してさらにその中に配置したMCに画像を読み込んでいます。
その5個の親MCに

tLoadStatus="ready";

とフラグを立てておいて、
ルートの1フレーム目に

loadPhoto_mcl = new MovieClipLoader();
mclListener = new Object();
mclListener.onLoadComplete = function(target_mc) {
target_mc._parent.tLoadStatus = "comp";
};
mclListener.onLoadError = function(target_mc, errCode) {
target_mc._parent.tLoadStatus = "error";
};
loadPhoto_mcl.addListener(mclListener);

とMovieClipLoaderの設定をして2フレーム目で

++nPnum;//カウント用変数(1フレーム目で0に初期化)
mTargetMc = "photo"+nPnum+"_mc.loadPhoto_mc";
loadPhoto_mcl.loadCliP("http://www.?/flash/P"+nPnum+".jpg", mTargetMc);
(なぜか相対パスで指定するとまったく読み込まないのでフルパスで指定してみました)

と読み込んでいます。
この先、1フレームあけて4フレーム目で

if (this["photo"+nPnum+"_mc"].tLoadStatus == "comp") {
gotoAndPlay(2);//次の写真を読み込む
}
if (this["photo"+nPnum+"_mc"].tLoadStatus == "error") {
gotoAndPlay(5);//5フレーム以降の動きへ
}
if (this["photo"+nPnum+"_mc"].tLoadStatus == "ready") {
gotoAndPlay(3);//どちらかのフラグがたつまでループ
}

としました。
ローカルで試すとこれで動くのですが、上のようにサーバー上のものを読み込もうとすると、読み込み自体はうまくいくのですが、ないはずの(テストのため3枚しかUPしてません)4枚目、5枚目のフラグもしばらく"ready"でループした後"comp"になってしまいます。

読込先のパスを絶対パスで指定しているのがまずいのか…
ちなみにフラッシュもフラッシュ置いたHTMLページもflashフォルダも同じ階層なら"/flash/P"+nPnum+".jpg"であってますよね?
まあ、でも画像は読み込めてるので関係ないと思いますが。

また5枚と決まっているので、とりあえず5枚分読み込み動作を行って、MCの大きさを取得して写真の枚数をカウントするとか、他の方法も思いついたのですが、とりあえず、なんでサーバー上だとだめなのか納得がいきません。

あいかわらず、思いつくままに書いた、わかりづらい稚拙なスクリプトで申し訳ないですが^^;
問題点の指摘等、お願いいたします。


----------------
GOMOMO

ひろゆき
Åê¹ÆNo.26650
投稿日時: 2006-7-5 2:24
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: MovieClipLoaderで画像をカウントする
引用:
あいかわらず、思いつくままに書いた、わかりづらい稚拙なスクリプトで申し訳ないですが^^;
問題点の指摘等、お願いいたします。

もう少し整理してから、質問しましょう。

_root
	|_ photo1_mc
		|_ loadPhoto_mc
	|_ photo2_mc
		|_ loadPhoto_mc

	(以下略)
という構造ですね?

引用:
ちなみにフラッシュもフラッシュ置いたHTMLページもflashフォルダも同じ階層なら"/flash/P"+nPnum+".jpg"であってますよね?

例えば、
sample.html
sample.swf
	|_ flash
		|_ P1.jpg
という階層になっているのであれば、
"/flash/P"+nPnum+".jpg" ではなく、
"flash/P"+nPnum+".jpg" ではないでしょうか?


_root 第1フレーム
for (var n=1; n <= 5; n++) {
	this["photo"+n+"_mc"].tLoadStatus = "ready";
}

loadPhoto_mcl = new MovieClipLoader();
mclListener = new Object();
mclListener.onLoadError = function(target_mc, errCode) {
	target_mc._parent.tLoadStatus = "error";
};
mclListener.onLoadInit = function(target_mc) {
	target_mc._parent.tLoadStatus = "comp";
};
loadPhoto_mcl.addListener(mclListener);

nPnum = 0;

_root 第2フレーム
++nPnum;
mTargetMc = "photo"+nPnum+"_mc.loadPhoto_mc";
//loadPhoto_mcl.loadCliP("/flash/P"+nPnum+".jpg", mTargetMc);
loadPhoto_mcl.loadClip("flash/P"+nPnum+".jpg", mTargetMc);

_root 第4フレーム
if (this["photo"+nPnum+"_mc"].tLoadStatus == "comp") {
	gotoAndPlay(2);
} 
if (this["photo"+nPnum+"_mc"].tLoadStatus == "error") {
	gotoAndPlay(5);
}
if (this["photo"+nPnum+"_mc"].tLoadStatus == "ready") {
	gotoAndPlay(3);
}

また、大文字・小文字の区別がきちんとついているか確認された方が良いでしょう。


引用:
他の方法も思いついたのですが、とりあえず、なんでサーバー上だとだめなのか納得がいきません。

そのサーバーはレンタル・サーバーですか?
ファイルが存在しない場合、
そのままのURLで、広告が表示されるなどということはありませんか?


サンプル

_root 第6フレーム
stop();
にして、photo8_mc の位置に、×印のシェイプを配置してあります。

外部画像は7つしかありません。8つ目は存在しません。



----------------
質問する際は、回答者に具体的な情報を与えてください。

gomomo
Åê¹ÆNo.26685
投稿日時: 2006-7-6 0:02
新米
居住地: 東京
投稿: 16
使用環境:
WinXP PRO
Flash CS3
Re: MovieClipLoaderで画像をカウントする
おっしゃるとおり整理がついてなくて、今読み返すとわかりづらかったと思います。
失礼しました

引用:
そのサーバーはレンタル・サーバーですか?
ファイルが存在しない場合、
そのままのURLで、広告が表示されるなどということはありませんか?


その指摘でわかりました。
「そのままのURLで」という事はないのですが、ないものを読み込もうとすると、「そのページはありません」的なページを出すサーバーです。
そのメッセージなのか、URLなのかわかりませんが、それを読み込んで、ロードコンプリートを返していたようです。

一度読み込んで”コンプリート”を受け取った後、そのMCの_widthなどを調べて、MC(画像)の数を数える事に成功しました。

おかげさまで勉強になりました。
ありがとうございます。


----------------
GOMOMO

野中文雄
Åê¹ÆNo.26689
投稿日時: 2006-7-6 1:01
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: MovieClipLoaderで画像をカウントする
404エラーのページがカスタマイズされていると、MovieClipLoader.onLoadInitまで正常にロードされたプロセスでイベントが発生してしまうことがあるようです。そのときは、MovieClipLoader.getProgress()メソッドで調べたバイト数が0を返したので、その結果で処理を分けたと思います。
引用:
gomomoさんは書きました:
「そのままのURLで」という事はないのですが、ないものを読み込もうとすると、「そのページはありません」的なページを出すサーバーです。
そのメッセージなのか、URLなのかわかりませんが、それを読み込んで、ロードコンプリートを返していたようです。


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

gomomo
Åê¹ÆNo.28752
投稿日時: 2006-9-16 13:02
新米
居住地: 東京
投稿: 16
使用環境:
WinXP PRO
Flash CS3
Re: MovieClipLoaderで画像をカウントする
超遅レスですが^^;
野中様ありがとうございました。

MovieClipLoader.getProgress()で容量を調べた方がスマート、というか、私の方法だと画像しか対応出来ないですよね。

覚えておきます。


----------------
GOMOMO

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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