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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     XMLのロードについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ひろゆき
Åê¹ÆNo.32929
投稿日時: 2007-4-15 13:24
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
配列アクセス演算子を理解されていないと思います。
引用:
["sample" + i]で見事解決しました!
引用:
["sample"+i]progressBar.total

リンク先の記事を丹念に読んだり、確認したりする必要があるのではないでしょうか?
読んで「理解したつもり」になっても、それは使えるということにはならないと思います。


my_mc.sample_mc は、
my_mc 上にある sample_mc を指しますね?

これを配列アクセス演算子を用いた場合、
my_mc["sample_mc"] で示されるわけです。
my_mc 上にある sample_mc」です。

では、["sample_mc"] は、何を指しているのでしょうか?


仮に、_root 上に、my_mc を配置し、
さらに、my_mc 上に sample_mc を配置したとします。

_root 第1フレームに
trace(my_mc.sample_mc);
trace(my_mc["sample_mc"]);
と記述。出力結果を確認。

_root 上に、sample_mc を配置したとします。

_root 第1フレームに
trace(sample_mc);
trace(["sample_mc"]);
と記述。出力結果を確認。


申し訳ないですが、これは、
ドット演算子と配列アクセス演算子」に、きちんと書かれていますよ。
流し読みされていませんか?

仮に、流し読みされていないとしても、何度も読み直したり、
そこに書かれていることを自分でテストしてみたりしなければ、
理解は深まりませんね。


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

ニューライス
Åê¹ÆNo.32933
投稿日時: 2007-4-15 21:50
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
Re: XMLのロードについて
引用:

それに、「MovieClipLoader をつける必要があるかどうか」が
質問の主旨ではないのですか?

プログレスバーについてはつける必要はないと考えました。
MovieClipLoaderをつけるかどうかについては、サムネイル画像が
複数になるため、読み込みが正常にできなかった場合を考え必要だと思っています。

読み込みエラーが発生した場合の処理として、MovieClipLoaderの利点を生かし
サムネイル画像表示箇所にエラーを表示しようと思ったのですが、
それができずこの流れになり、混乱してしまっています。

そこでまず、MovieClipLoaderのエラー表示をさせたいのですが
エラーが出ない原因が、配列アクセスの部分だと思いますので
まず、配列アクセスの部分を原因を理解したいと思います。

引用:

リンク先の記事を丹念に読んだり、確認したりする必要があるのではないでしょうか?
読んで「理解したつもり」になっても、それは使えるということにはならないと思います。

ごもっともです。

配列アクセス演算子の記事を、もう一度じっくり読み直して確認をしてみました。

では、["sample_mc"] は、何を指しているのでしょうか?

trace(["sample_mc"]);//出力:sample_mc

配列アクセス演算子の左側にオブジェクト指定が必要なので
これが問題ではないかと思いました。


trace(_root["sample_mc"]);//出力:_level0.sample_mc

まず、こちらの解釈で問題ないでしょうか?
ひろゆき
Åê¹ÆNo.32936
投稿日時: 2007-4-15 23:07
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
引用:
ニューライスさんは書きました:
配列アクセス演算子の左側にオブジェクト指定が必要なので
これが問題ではないかと思いました。

trace(_root["sample_mc"]);//出力:_level0.sample_mc

まず、こちらの解釈で問題ないでしょうか?

trace(this["sample_mc"]);
も、確認された方が良いでしょう。


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

ニューライス
Åê¹ÆNo.32939
投稿日時: 2007-4-15 23:59
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
Re: XMLのロードについて
ひろゆきさん、ありがとうございます。

trace(this["sample_mc"]);//出力:_level0.sample_mc


確認しました。
_rootの時と同様に_level0が表示されています。
ターゲット指定をすることで、問題なくsample_mcへアクセスが出来ているということですね。

そこで、今回の作成中のスクリプトに戻り、ムービークリップ(sample)の中にダイナミックテキスト(result_txt)を配置。
生成されたムービークリップ(sample0)にエラーを表示させようと思い、下記のスクリプトを記述しました。
※読み込み元の画像ファイル名を変更し、読み込みができない状態にしています。

var mcLoader:MovieClipLoader = new MovieClipLoader();
var objListener:Object = new Object();

objListener.onLoadError = function(target_mc:MovieClip, error_str:String):Void {
    // ロードできなかったときの処理
    _root["sample"+i].result_txt.text = "Not Found";
	trace(_root["sample"+i]);//undefinedとなる
};
objListener.onLoadInit = function(target_mc:MovieClip):Void {
	//ロード完了し第1フレームが実行された後の処理
	trace(target_mc + " ロード完了 ");
};

mcLoader.addListener(objListener);


この赤字の部分がundefinedとなるのかがわかりません。
変数iもundefinedとなるため、これが問題なのでしょうか?

_root["sample"+i].result_txt.text = "Not Found";の部分を
下記のように変更し、試したのですがundefinedでした。
_root.sample0.result_txt.text = "Not Found";
trace(_root.sample0);//出力:undefinedとなる


この結果だと、sample0自体が存在しないことになるのかなと思うのですが。
これ、もしかしてもっと根本的なところで間違えちゃってるかんじですかね。
ひろゆき
Åê¹ÆNo.32942
投稿日時: 2007-4-16 0:18
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
objListener.onLoadError = function(target_mc:MovieClip, error_str:String):Void {
	trace(target_mc);
	trace(i);
	_root["sample"+i].result_txt.text = "Not Found";
	trace(_root["sample"+i]);
};


XMLの読み込みをするなど、複雑な構造のまま試すのではなく、
XMLとは切り離して、試すなどされないと、
原因は分からないのではないでしょうか?

そもそも、mcLoader.loadClip() をどこでどのように実行しているのか、
分かりませんし、sample の構造についても、説明されていませんよね?
sample の構造は、当初のものから変えたのでしょうか?
それだけ、客観性を失っているということですから、
再度整理したうえで、回答された方がよろしいのではないでしょうか?

おかしなことが起きているということは、たいていの場合、
何かおかしなことを「ご自分でしている」ということですよ。


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

ニューライス
Åê¹ÆNo.32944
投稿日時: 2007-4-16 2:14
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
Re: XMLのロードについて
簡略化したものを作成しました。

赤字の部分が、今回MovieClipLoderを使用した時点から、
ずっと解決できない部分です。

まず、ムービークリップ(インスタンス名:sample/リンケージ名:sample)を用意。
ムービークリップ(sample)内にムービークリップ(インスタンス名:photo)と
ダイナミックテキスト(インスタンス名:result_txt)を配置。

flaファイルと同一階層にimgフォルダに作成。
img内には読み込む画像(s002.jpg?s005.jpg)4枚を用意。

下記のスクリプトで_root上にsampleをattachMovieで生成。

_root.sample1.photoへの画像読み込みで、エラーを発生させたい。
エラーは_root.sample1.result_txtに表示させる。



/**********************************
MovieClipLoader
************************************/
var mcLoader:MovieClipLoader = new MovieClipLoader();
var objListener:Object = new Object();

objListener.onLoadError = function(target_mc:MovieClip, error_str:String):Void {
    // ロードできなかったときの処理
    _root["sample"+i].result_txt.text = "Not Found";
	// _root.sample1.result_txt.text = "Not Found";//正常にエラーが表示される
	//trace(i);//6が返る
};
objListener.onLoadInit = function(target_mc:MovieClip):Void {
	//ロード完了し第1フレームが実行された後の処理
	trace(target_mc + " ロード完了 ");
};

mcLoader.addListener(objListener);

/**********************************
sampleMCの作成
************************************/
function createMC():Void {
	for( i:Number=1;i<=5;i++){
		var xpos:Number = 100;
		var ypos:Number = 10+(105*i);
		var _mc:MovieClip = _root.attachMovie("sample","sample"+i,i,{ _x:xpos, _y:ypos });
		mcLoader.loadClip("img/s00"+i+".jpg",_mc.photo);
		}
	}

createMC();


たびたびお手数をおかけしますが、よろしくお願いします。
野中文雄
Åê¹ÆNo.32945
投稿日時: 2007-4-16 2:44
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: XMLのロードについて
「画像(s002.jpg?s005.jpg)4枚」に、インスタンスが5つもある処理は「簡略化」といいません。→【問題を単純化(シンプルに)しない
引用:
ニューライスさんは書きました:
簡略化したものを作成しました。

参考:「forループでMovieClipに設定したイベントハンドラメソッドから変数を参照する
引用:
赤字の部分が、今回MovieClipLoderを使用した時点から、
ずっと解決できない部分です。
/**********************************
MovieClipLoader
************************************/
var mcLoader:MovieClipLoader = new MovieClipLoader();
var objListener:Object = new Object();

objListener.onLoadError = function(target_mc:MovieClip, error_str:String):Void {
    // ロードできなかったときの処理
    _root["sample"+i].result_txt.text = "Not Found";
	// _root.sample1.result_txt.text = "Not Found";//正常にエラーが表示される
	//trace(i);//6が返る
};
objListener.onLoadInit = function(target_mc:MovieClip):Void {
	//ロード完了し第1フレームが実行された後の処理
	trace(target_mc + " ロード完了 ");
};


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

ひろゆき
Åê¹ÆNo.32946
投稿日時: 2007-4-16 2:48
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
for文で用いている i をそのまま使おうとしても、使えませんね。
objListener.onLoadError = function(target_mc:MovieClip, error_str:String):Void {
	trace(target_mc);
	//_root["sample"+i].result_txt.text = "Not Found";
};


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

ニューライス
Åê¹ÆNo.32965
投稿日時: 2007-4-17 1:16
常連
居住地:
投稿: 81
使用環境:
MacOSX(10.4.2)
Flash8
Re: XMLのロードについて
引用:
for文で用いている i をそのまま使おうとしても、使えませんね。
objListener.onLoadError = function(target_mc:MovieClip, error_str:String):Void {
    trace(target_mc);
    //_root["sample"+i].result_txt.text = "Not Found";
};


はい、この問題が丸2日間解決できないのです。
上記のスクリプトでもtarget_mcの受け渡しは出来ています。

とりあえず、野中さんの記事を拝見し、サンプルスクリプトを
試しました。
forで使用しているカウンター変数iが、forループ処理後の
値(今回の場合は6)を返してしまう。
解決方法として、ムービークリップ生成時に、インスタンスに
変数iを指定することで解決する、いう点は理解できました。

しかし、どうしても今回のサンプルとどうつなげたらよいかが、
わかりません。objListener.onLoadErrorのときに
_root.sample0.result_txt.text = "Not Found";を表示したいのです。

attachMovieの時に_mc.i = i;としても、ターゲット指定したい
部分は_mc.result_txt.textです。
その時の変数iがわからないと表示ができません。

変数iの受け渡しはどのようにしたらできるでしょうか?
ひろゆき
Åê¹ÆNo.32966
投稿日時: 2007-4-17 1:50
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLのロードについて
引用:
ニューライスさんは書きました:
objListener.onLoadErrorのときに
_root.sample0.result_txt.text = "Not Found";を表示したいのです。

であれば、変数 i を渡す必要はないのでは?

引用:
その時の変数iがわからないと表示ができません。

そんなことはないと思います。

target_mc が何を指すものなのか、そして、ターゲットパスが理解できていれば、
objListener.onLoadError = function(target_mc:MovieClip, error_str:String):Void {
	target_mc._parent.result_txt.text = "Not Found";
};
とすることができると思いますが。

上記のことがきちんと理解できれば、
引用:
変数iの受け渡しはどのようにしたらできるでしょうか?

これもできるはずです。


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

« 1 (2) 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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