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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     duplicateMovieClipとattachMovieとonReleaseの関係?
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
SDF53
Åê¹ÆNo.23017
投稿日時: 2006-1-21 1:19
新米
居住地:
投稿: 8
使用環境:
Win2000,FLASH8
WinXP,FLASH8
duplicateMovieClipとattachMovieとonReleaseの関係?
はじめて投稿させていただきます。

XMLを読み込んで、parsonというMCを人数分複製し、複製したmcにonReleaseでdataReferという個人別のmcを表示させようとしています。

個人別のmc用のデータは、今現在は、<name>だけ表示できればよいです。

XMLの読み込みや解析・画像の表示・mcを指定どおりに並べるところまでは、思うように動いているのですが、ボタンアクションをつけるところで詰まっております。

下記に_rootに記載しているスクリプトを載せてありますので参照していただきたいのですが、

trace("parson"+i);
では、
parson0
parson1
parson2
parson3
parson4
parson5
parson6
parson7
ときちんと出力されていますが、ボタン機能を与えるところで、
trace("dataRefer"+i);
の結果が
dataRefer8
と帰ってきてしまいました。

trace("dataRefer"+i);
の出力結果がdataRefer0?dataRefer7で返ってくれるようにしたいのですが、わかりません。

dataReferの中にcloseボタンを配置し、
on (release) {
_parent.removeMovieClip();

}
で消えるようにしています。

_rootの1フレームに記述
引用:
this.stop();
mc_set = 0;
//基準座標
xper = parson._x;
yper = parson._y;
xspace = 120;
yspace = 120;
set_col = 4;
//
loadXML("testdata.xml");
//XMLデータを読み込む
function loadXML(url) {
myXML = new XML();
myXML.onLoad = loadEnd;
myXML.load(url);
}
//サムネイル並べ
function loadEnd() {
dataNode = myXML.firstChild;
naviNode = dataNode.childNodes;
// trace(dataNode.childNodes[1].childNodes[1].firstChild);
imgLoad.loadMovie(dataNode.childNodes[2].childNodes[1].firstChild);
num = naviNode.length;
//人数分MC作成して並べる
for (i=0; i<num; i++) {
mc_set++;
duplicateMovieClip("parson", "parson"+i, i);
_root["parson"+i]._x = xper;
_root["parson"+i]._y = yper;
//name_txtにテキスト読み込み
_root["parson"+i].parsonData.name_txt = dataNode.childNodes[i].firstChild.firstChild.nodeValue;
//画像読み込み
_root["parson"+i].parsonData.imgLoad.loadMovie(dataNode.childNodes[i].childNodes[1].firstChild.nodeValue);
//set_col分並べて、折り返し

xper += xspace;
if (mc_set == set_col) {
xper -= xspace*set_col;
yper += yspace;
mc_set = 0;
}

trace("parson"+i);
//btn機能
_root["parson"+i].onRelease=function(){
_root.attachMovie("dataRefer", "dataRefer1",i);
_root.dataRefer1.name2_txt =dataNode.childNodes[i].firstChild.firstChild.nodeValue;
trace("dataRefer"+i);
//end_btn
}
//end_for
}
}

xml内容
引用:
<?xml version="1.0" encoding="UTF-8" ?>
<navigator>
<parson id="no1">
<name>上戸彩</name>
<file>flower_01.jpg</file>
</parson>
<parson id="no2">
<name>矢田亜希子</name>
<file>flower_02.jpg</file>
</parson>
<parson id="no3">
<name>蛯原 友里</name>
<file>flower_03.jpg</file>
</parson>
<parson id="no4">
<name>チェ・ジウ</name>
<file>flower_04.jpg</file>
</parson>
<parson id="no5">
<name>深津 絵里</name>
<file>flower_05.jpg</file>
</parson>
<parson id="no6">
<name>長澤 まさみ</name>
<file>flower_06.jpg</file>
</parson>
<parson id="no7">
<name>篠原涼子</name>
<file>flower_07.jpg</file>
</parson>
<parson id="no8">
<name>内田恭子</name>
<file>flower_08.jpg</file>
</parson>
</navigator>


こちらのフォーラムやgoogleを検索したのですが、該当すると思われるページが見つからなかったので、投稿させていただきました。

FLASH自体は、長いこと使っていますが、スクリプトを書くようになってから、まだ日が浅いのでわかりづらいかと思いますが、よろしくおねがいします。
ひろゆき
Åê¹ÆNo.23018
投稿日時: 2006-1-21 1:33
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: duplicateMovieClipとattachMovieとonReleaseの関係?
何をなさりたいのか、いまいち分かりませんが。

btn機能 の部分だけ。
		//btn機能
		_root["parson"+i].i = i;
		_root["parson"+i].onRelease = function(){
			_root.attachMovie("dataRefer", "dataRefer"+this.i,this.i);
			_root["dataRefer"+this.i].name2_txt =dataNode.childNodes[i].firstChild.firstChild.nodeValue;
			trace("dataRefer"+this.i);
		//end_btn
		};
ではないでしょうか?

同じようなところでつまずいているものに、
以下のようなスレッドがありますので、一読されてもよいでしょう。
Tweenを 使ったフィルタアニメーション
onClipEvent (enterFrame) の制御

Buttonのthis
for文とボタンアクション
も参考になるので、熟読されることをお勧めします。


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

野中文雄
Åê¹ÆNo.23019
投稿日時: 2006-1-21 1:37
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: duplicateMovieClipとattachMovieとonReleaseの関係?
問題を切分けて、もっと単純化しましょう。そうすれば、XMLもduplicateMovieClipattachMovieも関係のないことが明らかになったはずです。
引用:
SDF53さんは書きました:
下記に_rootに記載しているスクリプトを載せてありますので参照していただきたいのですが、

コードをシンプルに」を、ご参照ください。
引用:
ときちんと出力されていますが、ボタン機能を与えるところで、
trace("dataRefer"+i);
の結果が
dataRefer8
と帰ってきてしまいました。
function loadEnd() {
	// ...[中略]...
	//人数分MC作成して並べる
	for (i=0; i<num; i++) {
		// ...[中略]...
		duplicateMovieClip("parson", "parson"+i, i);
		// ...[中略]...
		_root["parson"+i].onRelease=function(){
		// ...[中略]...
		trace("dataRefer"+i);
		// ...[後略]...


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

SDF53
Åê¹ÆNo.23020
投稿日時: 2006-1-21 2:27
新米
居住地:
投稿: 8
使用環境:
Win2000,FLASH8
WinXP,FLASH8
Re: duplicateMovieClipとattachMovieとonReleaseの関係?
>ひろゆき様、野中様
すばやいご回答ありがとうこざいます。

無事name2_txtに個別の名前が表示されるようにできました。

「this.i」という方法は、まだ完全に理解しきっていないので、明日改めて勉強させていただきます。

「問題を切り分けて」のところで、勘違いをしてしまっていたようでした。

「buttonのthis」も今日見たのですが、似てるけど違うのかな?と思ってスルーしてしまっていました。

これから注意深く見ていきます。

もう一点、気になることが実はあるのですが、

初めてのプログラムなので、この書き方であっているのかがよくわかっていません。

プログラムに正解はないとは思いますが、7割がたオッケーとかこの書き方は、マズいとかの線引きがあるかと思います。

参照すべきURLなどありましたら、ご教示いただけるとうれしいです。

深夜にも関わらず、ありがとうございました。
ひろゆき
Åê¹ÆNo.23021
投稿日時: 2006-1-21 2:40
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: duplicateMovieClipとattachMovieとonReleaseの関係?
気になったのは、loadMovie ですね。
一度に複数のファイルをloadMovieしない方が良いように思います。
FN0307007 - MovieClip.loadMovieで外部ファイルを読込む

あと、個人的には、XMLから読み込んだデータは、
一旦配列に入れてしまった方が扱い易いようにも思いますが、
これは、あくまでも個人的趣味ということで。


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

SDF53
Åê¹ÆNo.23033
投稿日時: 2006-1-21 16:26
新米
居住地:
投稿: 8
使用環境:
Win2000,FLASH8
WinXP,FLASH8
Re: duplicateMovieClipとattachMovieとonReleaseの関係?
>ひろゆき様

ご指摘ありがとうございます。


引用:
一度に複数のファイルをloadMovieしない方が良いように思います。
「FN0307007 - MovieClip.loadMovieで外部ファイルを読込む」


確かに危険ですね。ベストな方法を考えてみます。

配列も勉強して、取り入れたいと思います。

ありがとうございました。
野中文雄
Åê¹ÆNo.23039
投稿日時: 2006-1-22 15:11
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: duplicateMovieClipとattachMovieとonReleaseの関係?
FAQになってきた感がありますので、ノートとして書き起こしました。

参考:「forループでMovieClipに設定したイベントハンドラメソッドから変数を参照する
引用:
SDF53さんは書きました:
「this.i」という方法は、まだ完全に理解しきっていないので、明日改めて勉強させていただきます。


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

SDF53
Åê¹ÆNo.23058
投稿日時: 2006-1-23 10:28
新米
居住地:
投稿: 8
使用環境:
Win2000,FLASH8
WinXP,FLASH8
Re: duplicateMovieClipとattachMovieとonReleaseの関係?
>野中様

お忙しい中、ありがとうございます。

じっくり読んで、勉強したいと思います。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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