メイン 迷える子羊の部屋【初心者専用】 for文とボタンアクション | 投稿するにはまず登録を |
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
salvox | Åê¹ÆNo.11319 投稿日時: 2004-10-6 4:14 |
常連 居住地: 東京都 投稿: 73
使用環境:
|
これは、僕も陥った ど?も、たまにカキコしているSalvox(サルヴォックス)です。
あ?、確かに僕も最初の頃は、これに躓いてました。 多分、殆どの人が一往に躓いているんじゃないかと思うのですが。 多分 gigitさんの中では、
と
が、同じものだと思ってませんか?(僕も初めは思ってました。) でも、実際は二つの変数『 i 』は、全く別もので
↑この変数『 i 』は関数中で出てきていますが、 ローカル変数は、var宣言しないとローカル変数にならないので、 この変数『 i 』は、
と書いてるのと一緒の意味になります。 で、、
↑こちらの変数『i』は、 こちらも、onPress = function()←関数宣言中で 『i』が出てきてるにも関わらず、var宣言していないので、 ローカル変数にはならず、
と書いてるのと同じ意味になります。 つまり、for文の『i』は、『this』直下の『i』を指してるのに対しonPress = functon() 内の『i』は、this.mc0,,,31.bt直下の『i』変数を指してるので、for文でカウントアップされた変数『i』の値は、全く、onPress = functon()内の『i』には、影響を与えてないことになるんです。 では何故、31と表示されるか!? this.mc0.btのボタンアクションを実行すると、 for文で定義された trace(i); ってのが呼ばれるんですが、 この『i』は this.mc0.bt.iの『 i 』で、それは、呼び出されただけで、初期化も、宣言もされてないので値はundefined、もしくは、メモリー上にすら存在しない。 普通ならコンパイルエラーさ。 でも、Flashは気が利いてるというか、余計な処理なのか、 どこかで変数『i』が宣言されてないか探してくれるんですよ。 で、、先ほどの、、
↑ なんと!! i = 0; と立派に宣言され、かつ初期化まで されて、おまけに、i++ とインクリメントまでされてる変数が ある!! ここだ!! っと、Flashはお利口にも、余計に 『this.mc0.bt.i を this.i でしょう?』 『あんた書き間違えたんだよね?』 と、言わんばかりに、取得し、 結果 31 が表示されると。 如何でしょう? 最初は分かりづらいかも知れませんが、 その内慣れますよ(^^ ;)。
|
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
for文とボタンアクション | gigit | 2004-10-3 19:18 |
Re: for文とボタンアクション | Fumio | 2004-10-3 20:39 |
» これは、僕も陥った | salvox | 2004-10-6 4:14 |
Re: デフォルト参照とthis参照 | Fumio | 2004-10-6 9:58 |
Re: これは、僕も陥った | youich | 2004-10-6 10:44 |
ありがとうございました。 | gigit | 2004-10-6 21:30 |
m(_ _)m 勉強不足でした。 | salvox | 2004-10-12 4:16 |
投稿するにはまず登録を | |