0

私はマイナーゲームを作成しています(金のかけらがあり、フックで捕まえる必要があります)。「Gold」という名前の MovieClip(root) のすべての子を取得するように Main クラスを変更し、それらを Array(boulders[]) に配置して、後で衝突をチェックします (すべての「Gold」MovieClip を設計してステージに配置します)。レベル)。プレーヤーがすべてのゴールドを収集すると (玉石 array.length <= 0 の場合)、次に goToAndStop(nextLevel) で、再びステージからゴールドの MovieClip を取得し、名前が == "Gold" の場合は、それを玉石に置きます[ ]。何が起こったのか: 最初のレベル (フレーム 2 の原因はフレーム 1 がプリローダー) ではすべて問題ありません - ステージ (デザイン モード) に 2 つの金の MovieClip があり、2 つの金すべてが配列に配置されて表示されます。2 番目のレベルには 4 つのゴールドがあり、そのうちの 2 つだけが配列に配置されて表示されます。第 3 レベルでは、ステージ上に 7 つのゴールドをデザインしましたが、3 つだけが表示され、ボールダー アレイに配置されます。次のフレームのゴールド ムービークリップのカウントから、(前のフレームの) ゴールドのほぼ前のカウントが差し引かれます。誰か何か考えはありますか?

Main.as コードを配置しています。

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);
            }

ここでは、"Gold" という名前のすべての子をボルダー アレイに追加し、ステージに配置します。次に、ポッドとロッドを追加します。

 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();
                }
                }
4

1 に答える 1