2010/12/10(金) [n年前の日記]
#1 [flash] MovieClipの配列を持とうとしてめちゃくちゃハマる
自分で作ったクラスの中に、MovieClip の配列を持とうとして、
不思議なのは、private var _x:Number; みたいな変数には、ちゃんと値が入っていること。また、private var _emc:MovieClip; みたいな変数にも、ちゃんとMovieClipのポインタ?アドレス?インスタンス名?が入ってる。が、配列にすると上手くいかない。
丸一日実験してみたが、よくわからない。結局、attachMovie() する際に生成したインスタンス名を使って、
private static var _MCMAX:Number = 4; private var _mc/*MovieClip*/:Array = new Array(); private var _ofs/*Point*/:Array = new Array();とか、
for ( var i:Number = 0; i < _MCMAX; i++ ) { _mc[i] = null; _ofs[i] = new Point(0,0); }とか、
for ( var i:Number = 0; i < _MCMAX; i++ ) { _mc[i] = _root.attachMovie("img"+i, "tobj"+i, _depth + i); _ofs[i].x = ox; _ofs[i].y = oy; }とか、そんな感じで記述して、かつ、その自分で作ったクラスを配列で持ってあれこれ処理をしようとしたのだけど。そのクラスの中に書いたMovieClip関係の初期化メソッドを呼ぶと、なぜか一番最後の設定が、それまで処理してきた全てのクラスに適用されてしまって延々ハマってしまったり。
不思議なのは、private var _x:Number; みたいな変数には、ちゃんと値が入っていること。また、private var _emc:MovieClip; みたいな変数にも、ちゃんとMovieClipのポインタ?アドレス?インスタンス名?が入ってる。が、配列にすると上手くいかない。
丸一日実験してみたが、よくわからない。結局、attachMovie() する際に生成したインスタンス名を使って、
var mc:MovieClip = _root[instansName]; return ( mc == undefined )? null : mc;みたいなことをして、mcが存在してるのかしてないのかを判別できるようにしてその後の処理をするように。無様だ…。
[ ツッコむ ]
以上です。