FlashCCでiPhoneのゲームアプリを制作している件です。
addChildで配置したキャラを、ゲームオーバーなどで削除しようとして少しハマったのでメモします。
Flashでは、何かASのゲーム用フレームワークでも使わなければ、SpriteやMovieClipをaddChildすると思います。
for (var i:uint=0; i< maxSAM; i++) {
var m:sam = new sam();
m.name ="sam_"+i;
m.x =-100;
m.y =1136;
aSAM.push(m);
gameLayer.addChild(m);
}
で、ゲームオーバーした後に配置したキャラクターを消去したかったのですが、この方法が分からなくて躓きました。
自分なりにやってみたのが、rootからだと配列を使って以下のような感じ。
for (var i:uint=0; i< maxSAM; i++) {
aSAM[i].removeChild();
}
上記でダメだったので、MovieClip自身に削除用のfunctionを設けてみたりもしました。
function deleteSelf():void{
this.removeChild();
}
こんなことしてみたり、
function deleteSelf():void{
parent.removeChild(this);
}
でも、全然消えてくれませんでした。
そこで「自分自身 removeChild」でググったところ、こちらのページ(「mooney_AS_weblog」)に方法が載っていたので参考にさせていただきました。
自分用のASには、ゲームをリセットする際に、以下のようにrootからMovieClipへ命令してみました。
for(i=0; irootからは、こんな感じ。
function deleteSelf():void{ this.parent.removeChild(this); }それを受けるMovieClipのfunctionの方は、こんな感じ。
コツは、「this.parent.removeChild(this);」という感じに、親からのパスで自分を消すようremoveChildするみたいです。
これで、無事に解決できました!
こちらが完成したゲームです!