- ベストアンサー
mcにリンクを順番に張りたい
- forループを使用してmcに順番にリンクを張りたい場合、すべてのmcが同じリンクになってしまう問題が発生します。
- 原因は、forループ内のonRelease関数が参照するiの値が最終的な値になってしまうためです。
- この問題を解決するためには、onRelease関数内でiの値を固定化する必要があります。
- みんなの回答 (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"); という意味であるものとして書き換えました。
お礼
ありがとうございました。 細かな修正もしていただいてありがとうございます。 まだまだ初心者なもので、 なかなか正しい書き方が理解できいない部分があるので助かります。