【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード

for(i=0; i<5; i++){
creatEmptyMovieClip(["mc"+i],i);
_root["mc"+i]._x = i*10
_root["mc"+i].onRelease=function{
getURL(["test"+i],"_blank");
}
}
として、
mc1にはtest1
mc2にはtest2
mc3にはtest3
mc4にはtest4
mc5にはtest5
のリンクを設定したいのですが、
なぜかすべてのmcにtest5へのリンクがついてしまいます。

上記のように順番にリンクをつけるには
どのようにしたらいいのでしょうか。

_root["mc"+i].onRelease=function{
trace(i);
}
でiの値を確かめてみると
iが5というのがわかります。
このiをカウントするようにすれば解決しそうなんですが、、、。

A 回答 (1件)

> なぜかすべてのmcにtest5へのリンクがついてしまいます。



この理由に関しましては
私もここ(OKWave や 教えて!goo など)で何度も書いたことがありますし
他の方が答えていらっしゃっるのも何度もみたことがあります。
どこでも良いですがこの辺↓でも参考にしてみてください。

http://okwave.jp/qa4822516.html

対処法は場合によって変わりますし
複数の方法があります,

ご質問の場合は,
「i の値を各mcの変数に格納して onRelease 時に this参照 させる」
または
「"test"+i を各mcの変数に格納して onRelease 時に this参照 させる」
くらいが良いと思います。


for(i=0; i<=5; i++){
creatEmptyMovieClip(["mc"+i],i);
// そのムービークリック内の変数 myNum に i の値を格納
_root["mc"+i].myNum = i;
_root["mc"+i]._x = i*10
_root["mc"+i].onRelease=function{
// "test" + this参照 で取り出した数に getURL
getURL("test"+this.myNum,"_blank");
}
}

または

for(i=0; i<=5; i++){
creatEmptyMovieClip(["mc"+i],i);
// そのムービークリック内の変数 myURL に "test"+i を格納
_root["mc"+i].myURL = "test"+i;
_root["mc"+i]._x = i*10
_root["mc"+i].onRelease=function{
// this参照 で取り出した文字列に getURL
getURL(this.myURL,"_blank");
}
}


あと,細かい点は
for(i=0; i<5; i++) →変更→ for(i=0; i<=5; i++)
だと思います。

また
getURL(["test"+i],"_blank");
これは意味がわからないので(ちゃんとした配列アクセス演算子の使い方になっていないので)
getURL("test"+i,"_blank");
という意味であるものとして書き換えました。
    • good
    • 0
この回答へのお礼

ありがとうございました。

細かな修正もしていただいてありがとうございます。
まだまだ初心者なもので、
なかなか正しい書き方が理解できいない部分があるので助かります。

お礼日時:2009/04/16 22:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!