- 2010-03-19 (金) 1:19
- action script
インスタンスが、表示リストに存在しているかどうかは、getChildByName()メソッドを使って判定することができます。(via FlashゲームPG講座 for AS3.0)(contains を使った判定方法もこの類かと)
それとは違い、インスタンスを作ったかどうかを判定したい時がありましたよ!というのが今回のテーマ。
あるクラス内で、new して”mc1″というインスタンスを生成したとする。でも”mc2″は生成せず、”mc3″は生成する。mc1と3はインスタンス生成はしたものの addChild はしていない状態。
インスタンス名の数字の部分をint型の変数を使ってハンドリングしようとした時、
if(this["mc"+num]){
addChild(this["mc"+num])
//なんか処理
}
で、変数numをカウントアップしていって・・みたいなコード書くと、1と3の時は動くけれど、2の時にリファレンスエラー
ReferenceError: Error #1069: Property mc2 not found on Main(※クラス名) and there is no default value.
になっちゃう。エラーは困る。幸い1と3の時は正常に動いているので、try,catchを使って
try{
if(this["mc"+num]){
addChild(this["mc"+num])
//なんか処理
}
}catch(e:Object){
trace("エラーは無視するぜ");
}
という感じでエラーだけ無視して難を逃れましたと。e の type は trace(typeof e) で Object だったのでそうしておきました。
- Newer: 今日の、一貫
- Older: ActionScript 3.0 イメージエフェクト
Comments:3
- 正宗 10-03-20 (土) 16:52
-
こんにちは。
僕もとりあえず存在確認が面倒なときとか、try~catchでエラーを無視するように書いてます。
その際、ぼくはcatch(e:Error)と書いてます。のちのちにエラーによって分岐したい場面が出てきたとき、こっちのほうがいいかなあと。
まだそんな丁寧なことする場面に出くわしてないですが>< - kaminaly 10-03-23 (火) 20:22
-
ダイナミッククラスってことですよね?
trace(hasOwnProperty(this["test"]));
this["test"] = “test”;
trace(hasOwnProperty(this["test"]));こちらでどうでしょう?
- kaminaly 10-03-23 (火) 23:29
-
間違えた!
trace(hasOwnProperty(“test”));
this["test"] = “test”;
trace(hasOwnProperty(“test”));ですね(汗






![Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編]](http://ecx.images-amazon.com/images/I/617sNhK9P9L._SL75_.jpg)


![FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]](http://ecx.images-amazon.com/images/I/51915J1BG6L._SL75_.jpg)


