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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     変数名、インスタンス名について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yakumo
Åê¹ÆNo.42432
投稿日時: 2009-5-28 17:19
常連
居住地: 東京
投稿: 67
使用環境:
WinVista,FlashCS4,Actionscript3.0
変数名、インスタンス名について
下記の??のケースについて教えて下さい。

?に関してはimgLoaderをforの外で生成しているので、forの中では単純にそのインスタンス名を5回連呼していると理解しています。

?のケースに関してですが、imgLoaderを5回同じ変数名で生成しているので、実体は1つで5回上書きされると考えていました。
しかし、name属性を調べてみるとインスタンス名が連番で自動的に付き、別の変数が5つ生成されているように見受けられます。

?に関しては納得できますが、?の方はどのように理解すればよいのでしょうか?


////////////////?/////////////////

var imgLoader:Loader = new Loader();

for (var i:uint=0; i<5; i++) {
trace(imgLoader.name);
}

///////////////?//////////////////

for (var i:uint=0; i<5; i++) {
var imgLoader:Loader = new Loader();
trace(imgLoader.name);
}

///////////////////////////////////

?の場合の出力結果

instance1
instance1
instance1
instance1
instance1

?の場合の出力結果

instance1
instance2
instance3
instance4
instance5

森 巧尚
Åê¹ÆNo.42435
投稿日時: 2009-5-28 20:24
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 変数名、インスタンス名について
?は、Loaderを1個新しく作ってから、5回その名前を表示しているので、同じ名前が5個表示されています。

?は、Loaderを新しく作って(作り直して)その名前を表示する、というのを5回繰り返しています。つまり、5個作ってます。
newするたびに新しいインスタンスが作られるので、5つの違う名前が表示されることになります。

どちらも、新しく作ったLoaderを「imgLoader」という変数に代入していますが、?のほうはこのままでは使いにくいでしょう。

?のほうは作ったLoaderが代入されているのでimgLoaderですぐにアクセスできますが、?のほうは、毎回代入して上書きし直しているわけですから、5つ目のLoaderだけが入っていることになります。
それぞれに何か処理を行う場合、for文の中ですべての処理を行ってしまう方法もありますが、imgLoaderを配列にして5つの変数を用意しておくのがいいでしょうね。


----------------
森 巧尚
http://www.ymori.com

yakumo
Åê¹ÆNo.42436
投稿日時: 2009-5-28 20:39
常連
居住地: 東京
投稿: 67
使用環境:
WinVista,FlashCS4,Actionscript3.0
Re: 変数名、インスタンス名について
森さま

ご返信有難うございます。
?は結論として、5つのインスタンスを生成しているが、全部同じ変数名ということですね。だから変数で個々を呼び出せないので使い勝手が悪くなるということですね。

恐れ入りますが、2点ほど分からない事があります。

[1]インスタンス名は特に指定しない場合、勝手に割り振られるのでしょうか?

[2]imgLoaderを配列にして5つの変数を用意…というのは、どういうことでしょうか?


引用:

ymoriさんは書きました:
?は、Loaderを1個新しく作ってから、5回その名前を表示しているので、同じ名前が5個表示されています。

?は、Loaderを新しく作って(作り直して)その名前を表示する、というのを5回繰り返しています。つまり、5個作ってます。
newするたびに新しいインスタンスが作られるので、5つの違う名前が表示されることになります。

どちらも、新しく作ったLoaderを「imgLoader」という変数に代入していますが、?のほうはこのままでは使いにくいでしょう。

?のほうは作ったLoaderが代入されているのでimgLoaderですぐにアクセスできますが、?のほうは、毎回代入して上書きし直しているわけですから、5つ目のLoaderだけが入っていることになります。
それぞれに何か処理を行う場合、for文の中ですべての処理を行ってしまう方法もありますが、imgLoaderを配列にして5つの変数を用意しておくのがいいでしょうね。
森 巧尚
Åê¹ÆNo.42437
投稿日時: 2009-5-28 22:03
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 変数名、インスタンス名について
引用:

yakumoさんは書きました:
imgLoaderを配列にして5つの変数を用意…というのは、どういうことでしょうか?


配列を用意しておいて、そこに順番にいく方法などです。


var imgLoader:Array = new Array();

for (var i:uint=0; i<5; i++) {
	imgLoader[i] = new Loader();
}

for (i=0; i<5; i++) {
	trace(imgLoader[i].name);
}


----------------
森 巧尚
http://www.ymori.com

野中文雄
Åê¹ÆNo.42438
投稿日時: 2009-5-28 22:35
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 変数名、インスタンス名について
ActionScript 3.0では、動的に生成するインスタンスのDisplayObject.nameプロパティの値は、あまり利用する意味がないように思われます。

参考: F-site「MovieClipインスタンスとインスタンス名
引用:
yakumoさんは書きました:
[1]インスタンス名は特に指定しない場合、勝手に割り振られるのでしょうか?

なお、機種依存文字のご使用はお控えください。


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

yakumo
Åê¹ÆNo.42441
投稿日時: 2009-5-29 12:29
常連
居住地: 東京
投稿: 67
使用環境:
WinVista,FlashCS4,Actionscript3.0
Re: 変数名、インスタンス名について
森さま、野中さま

ご返信ありがとうございます。
このような動的生成のケースでは、インスタンス名をもとにアクセスするのではなく、配列を1つ生成してその中に要素を格納してインデックス番号等でアクセスするのが通常の考え方なんですね。
この辺の考え方が非常によく理解できました。
どうもありがとうございます。

また機種依存文字気を付けます。
今後ともどうぞよろしくお願いいたします。
sorate
Åê¹ÆNo.42444
投稿日時: 2009-5-30 11:01
新米
居住地:
投稿: 1
使用環境:
Re: 変数名、インスタンス名について
ActionScript1.0は文法がJavaScriptに似ているが、ActionScript2.0からはクラスベースのオブジェクト指向言語になりJavaに似通っている。 ActionScriptではすべてのデータをオブジェクトと見なしている。Flashではプログラミングコードを記述する場所が複数あり、タイムラインのフレーム上に書いた場合とクラスとして外部ファイルに書いた場合と記述の仕方が若干異なる。また、ActionScript2.0(Flash 8)まではムービークリップまたはボタン上にプログラミングコードを記述できたが、ActionScript3.0(Flash CS3)で廃止された。 ここではActionScript3.0の文法を説明していく。


----------------
為替レート

ひろゆき
Åê¹ÆNo.42453
投稿日時: 2009-5-31 10:37
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 変数名、インスタンス名について
先の投稿は、「ActionScript - Wikipedia」からの抜粋で、
回答にはなっていないように思います。

アカウント削除も含め、対応された方がよろしいのでは?


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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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