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