私はマイナーゲームを作成しています(ここには金の部分があり、フックでそれらをキャッチする必要があります)。 Mainクラスを変更して、名前が "Gold"のMovieClip(ルート)のすべての子を取り、Array(boulders [])に配置して後で衝突をチェックします(ステージ "Gold" MovieClipsをすべてのレベル)。プレーヤーがすべてのゴールドを集めるとき(玉の配列array.length < = 0)、次にgoToAndStop(nextLevel)がステージからゴールドムービークリップを取り、名前が== "ゴールド"の場合はボールダー[ ]。 何が起こったか: 最初のレベル(フレーム2はフレーム1がプリローダーであるため、すべてが良い) - 私はステージ上に2つのゴールドムービークリップ(デザインモードで)を持ち、2つすべての金をアレイに入れて表示します。 2番目のレベルで私は4個の金を持っていて、それらのうち2個だけが配列に入れられて表示されます。 第3レベルでは、私はステージ上にデザインされた金7個を持っていますが、3個のみが表示され、ボルダーアレイに配置されています。 次のフレームのゴールドムービークリップの数から、前のフレームの金の数がほとんど減っています。 誰か考えていますか?ここでステージ上のムービークリップが消えて
public function createLevel(){
nextLevel = this.currentFrame + 1;
for (var i:uint = 0; i < MovieClip(root).numChildren; i++){
if(MovieClip(root).getChildAt(i).name=="Gold")
{
this.addChild(MovieClip(root).getChildAt(i));
boulders.push(MovieClip(root).getChildAt(i));
}
}
placePod();
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyRelease);
addEventListener(Event.ENTER_FRAME, updateStatus);
}
私は岩の配列内の名前「ゴールド」を持つすべての子を追加して、ステージ上に置く:
私はMain.asコードを配置しています。 次に、ポッドとロッドを追加します。
private function placePod():void {
pod = new Pod();
addChild(pod);
pod.createRod();
}
そして、ここでキープレスを待機し、岩を取り除く機能であり、その後、boulder.length < = 0の場合は、すべてのリスナーとgoToAndStop(nextLevel)を削除し、再び金をロードするために再びcreateLevel()関数を呼び出します次のフレームのムービークリップ。ここで私が上を記述した問題が来る。
private function updateStatus(e:Event):void {
if (!left && !right) {
pod.setSpeed(0);
} else if (left && right) {
pod.setSpeed(0);
} else if (left) {
pod.setSpeed(-4);
} else {
pod.setSpeed(4);
}
for (var i in boulders) {
boulders[i].updateStatus();
if (boulders[i].remove) {
removeBoulder(boulders[i]);
boulders.splice(i, 1);
}
}
if(boulders.length <= 0)
{
pod.removeRod();
removeChild(pod);
stage.removeEventListener(KeyboardEvent.KEY_DOWN,onKeyPress);
stage.removeEventListener(KeyboardEvent.KEY_UP,onKeyRelease);
removeEventListener(Event.ENTER_FRAME, updateStatus);
MovieClip(root).gotoAndStop(nextLevel);
createLevel();
}
}
誰かが私を助けることができれば、私は非常に感謝します:-)ありがとう。
私の考えでは、これはMovieClip(ルート)の子供が削除されていない原因となり、フレーム2フレーム3に名前が「ゴールド」の5つのムービークリップがあり、残りの3つがまだ存在する場合は2つのムービークリップだけが表示されます。私はこれを試してみます:MovieClip(root).removeChild(boulder); removeBoulder関数では動作しません。 – Mariyan
OKソリューションを見つけました:-)すべてのキーフレーム(レベルフレーム)の間に空のキーフレームを残します。そして、それは動作します。今私のnextLevel変数は、1つ追加する代わりに次のレベルに移動するたびに2ずつ増加します。 – Mariyan