2012-01-30 6 views
0

私はマイナーゲームを作成しています(ここには金の部分があり、フックでそれらをキャッチする必要があります)。 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(); 
       } 
       } 

誰かが私を助けることができれば、私は非常に感謝します:-)ありがとう。

+0

私の考えでは、これはMovieClip(ルート)の子供が削除されていない原因となり、フレーム2フレーム3に名前が「ゴールド」の5つのムービークリップがあり、残りの3つがまだ存在する場合は2つのムービークリップだけが表示されます。私はこれを試してみます:MovieClip(root).removeChild(boulder); removeBoulder関数では動作しません。 – Mariyan

+0

OKソリューションを見つけました:-)すべてのキーフレーム(レベルフレーム)の間に空のキーフレームを残します。そして、それは動作します。今私のnextLevel変数は、1つ追加する代わりに次のレベルに移動するたびに2ずつ増加します。 – Mariyan

答えて

0

グローバルプロパティに

に関するあらゆる問題の最も簡単な解決策は、最初のフラッシュで何かを作成し、ムービークリップにそれをダブルクリックするよりも、ゲームやクイズなどのインスタンスを与える空のムービークリップを追加し、その後にプロジェクトのGOBACKを作りますすべてのあなたのコードを入力するメインのタイムラインと今あなたの変数すべてとeaslyグローバルにすることができません

関連する問題