メイン 迷える子羊の部屋【初心者専用】 for文とボタンアクション | 投稿するにはまず登録を |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
salvox | Åê¹ÆNo.11441 投稿日時: 2004-10-12 4:16 |
常連 居住地: 東京都 投稿: 73
使用環境:
Windows2000 FlashMX テキストエディター:EmEditor |
m(_ _)m 勉強不足でした。 >> 野中さん, youichさん, gigiさん
返事遅れて申し訳ありません。 野中さんの言われたやつ試してみました。 なるほど。 勉強不足でしたm(_ _)m >> gigiさん申し訳ない。適当なこと言ってしまって。 デフォルト参照は、 そのスクリプトが書かれたタイムラインを参照するんですね。 全くねじれて(,,っというか思い込みで)解釈していました。 一つ勉強。
|
gigit | Åê¹ÆNo.11331 投稿日時: 2004-10-6 21:30 |
新米 居住地: tokyo 投稿: 2
使用環境:
WinXP,Flash MX Mac OS9,Flash MX |
ありがとうございました。 お返事が遅れて申し訳ありません。
>野中さん 早速のご回答、ありがとうございました。 おかげで解決いたしました。 なんとか希望のものが作れそうです。 あと、仕組みの説明も大変分かりやすくて、 次回以降、いろいろと応用できそうです。 用語関係で紛らわしい表現をしてしまい、 すみませんでした。 今度からは正しい用語を使うように心がけます。 >salvoxさん、youichさん こちらも補足説明ありがとうございました。 変数を持たせる場所がよくわかってなかったようですが、 一連のご説明でなんとなく理屈は分かった気がしますので、 あとはスクリプトを他で応用しながら 感覚的に身につけていこうと思います。 本当にどうもありがとうございました。
|
youich | Åê¹ÆNo.11322 投稿日時: 2004-10-6 10:44 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: これは、僕も陥った 引用:
あれ、この二つの変数『 i 』は同じものですよ? Flashの場合、変数のスコープは簡単に言ってしまうと、 ローカル(activationObjectも含む) ムービークリップ(タイムラインも含む)、 グローバルですね、 そして関数は定義された場所のスコープを持ちます。 引用:
だからここ↑は、、、
と書いてるのと同じ意味ですね。
|
野中文雄 | Åê¹ÆNo.11320 投稿日時: 2004-10-6 9:58 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: デフォルト参照とthis参照 結論は、そのとおりです。ただ、以下の部分が、少しニュアンスが違うように思います。
タイムラインに名前のないfunction(イベントハンドラメソッドなど)を定義すると、ターゲットのないデフォルト参照とthis参照とが分離します。以下のフレームアクション、MovieClipインスタンスmy_mcを配置したタイムラインに設定して、結果をご覧ください。
引用: salvoxさんは書きました: |
salvox | Åê¹ÆNo.11319 投稿日時: 2004-10-6 4:14 |
常連 居住地: 東京都 投稿: 73
使用環境:
Windows2000 FlashMX テキストエディター:EmEditor |
これは、僕も陥った ど?も、たまにカキコしている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 が表示されると。 如何でしょう? 最初は分かりづらいかも知れませんが、 その内慣れますよ(^^ ;)。
|
野中文雄 | Åê¹ÆNo.11263 投稿日時: 2004-10-3 20:39 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: for文とボタンアクション 用語として、「シンボル名」と「インスタンス名」は、区別しましょう。「シンボル名」は、ActionScriptの制御対象にはなりません。
引用: gigitさんは書きました: 以下のスクリプトから判断するかぎり、Buttonを配置している(つまりButtonが格納されたMovieClipシンボル内の)フレームではなく、Buttonを格納したMovieClipが配置されているタイムラインのフレームアクションだと思われます。その前提で、回答いたしします。 引用: というわけで、ボタンを配置しているフレームに、以下のようなスクリプトを記述しました。 フレームアクションの最終行にステートメントを加えると、現状がおわかりになるでしょう。
いってみれば、お小遣いをあげるのに、同一口座(タイムライン)のキャッシュカード(変数i)を複数枚つくって渡しているような状況です。そうではなく、各自の口座にお金を降込んであげる必要があります。 引用: しかし、これだとどのボタンを押しても、
|
gigit | Åê¹ÆNo.11262 投稿日時: 2004-10-3 19:18 |
新米 居住地: tokyo 投稿: 2
使用環境:
WinXP,Flash MX Mac OS9,Flash MX |
for文とボタンアクション 現在、以下のようなものを作成しています。
・ボタンを配置したムービークリップを30個配置。 ・ムービークリップのシンボル名には、ID番号を振っている。(mc1、mc2?mc30) ・ボタンのシンボル名は、すべてbt。 ・ボタンを押すと、そのボタンを格納しているムービークリップのID番号と同じ数字をtraceで表示。 ※ちなみに最終的には、この雛形を流用してムービークリップのID番号と同じIDを持つ外部SWFファイルを呼び出す仕組みにしようと思っています。 というわけで、ボタンを配置しているフレームに、以下のようなスクリプトを記述しました。 ----------------------------------------- SetBt(); function SetBt(){ for(i=1;i<31;i++){ this["mc"+i].bt.onPress=function(){ trace(i); } } } ----------------------------------------- しかし、これだとどのボタンを押しても、 「31」と表示されてしまいます。 根本的に何かの解釈が間違っていると思うのですが、 どういう方向で解決してよいか分からず、 すこし悩んでおります。 どなたかご教授いただけますでしょうか。 どうぞよろしくお願いいたします。
|
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |