yumcom.net

Yuko M's communication network since 2006

03-11-2008
卒業制作その4

2月28日に「カキが焼けるようになった!」と喜んでいたのが懐かしい。
日曜日の午後から昨日の夜まで、丸一日悩んでました。
1ターン終わったときにカキが消せなくて。

それで、MLでTAさんにもいろいろアドバイスもらいつつ、
昨日の夜に学校へ出向いて直接TAさんつかまえて見てもらってたら、
ちょうど通りがかったのがFLASHマスターの某先生。
京都、いや関西でこの先生の右に出る者はいない、
と噂の先生に見てもらったらわかるかも!と喜んだのもつかの間、
いろいろ試してくださったものの、解決前にタイムオーバー。
再び独りで考えることとなりました。

でも、先生に見てもらったのはムダじゃなかった!
いろいろ試す中で配列を使ってはったのが大ヒントとなり、
ゲーム制作の本も参考になってピンときて…自己解決。
やっと、やっとやっとやっと、一連の流れがちゃんと動くようになりました♪

AS3の夢を見てうなされるんじゃないかと思うくらい悩んだけど、
おかげでまたちょっとAS3のことを理解したように思います。


今後の自分のためにスクリプトを一部、書いておきます。

本当はもっとごちゃごちゃしてますが、肝心な部分だけ抜粋。

function oysterSet(num:int):void {
  var i:int;
  for(i=0; i     var oyster_mc:OysterMc;
    oyster_mc = new OysterMc();
     //中略(出現するx,y座標の指定)
    this.addChild(oyster_mc);
  }
}

というカキを配置するメソッドを使い、

oysterSet(8);

を実行してカキのムービークリップを8個出現させ、
1つのターンが終わったら、

function gotoBegin(event:TimerEvent):void {
  this.removeChild(oyster_mc);
  oyster_mc = null;
}

でカキのムービークリップ8個を消したかったのですが、
 this.removeChild(oyster_mc);
の部分で「未定義のプロパティoyster_mcへのアクセスです」と
コンパイルエラーが出ました。

この、removeChildでのアクセス先がわからなくて悩んでいたわけです。

で、先生に見てもらったとき、oysterSetメソッドの最後に、

oyster_array.push(oyster_mc);

として各oyster_mcを配列に代入して、
trace関数で各インスタンスの情報をチェックしたりしてはったのですが、
先生が行ってしまったあともその辺りをいじっていて、
私のバイブルとなっているゲーム制作の本も参考にしたりして、
やっとわかったという次第です。

つまり、removeChildで消したいのは各インスタンスで、
それを何とか一気に消すことばかり考えていたのですが、
そうではなく、各インスタンスにアクセスして1つずつ消せばよかったわけです。
ということで、1つのターンが終わったときに実行する
gotoBeginメソッドの中を以下のようにすることによって、

function gotoBegin(event:TimerEvent):void {
  for (var i:int = 0; i < oyster_array.length; i++) {
    this.removeChild(oyster_array[i]);
    oyster_array[i] = null;
  }
}

無事、全てのカキのムービークリップインスタンスを
画面上から消すことが出来ました。

めでたしめでたし。

[WEB] | comment(0)
    
Name:

E-mail:

URL:

Comment:

 
Copyright (c) 2006-2010, yumcom.net. All rights reserved.