2012-01-30 62 views
0

我正在創建一個礦工遊戲(那裏有金塊,你必須用鉤子抓住它們)。 我修改了Main類,讓名爲「Gold」的MovieClip(root)的所有孩子將它們放入Array(boulders [])中,稍後檢查碰撞(我設計並放置了幾個「Gold」MovieClips for每個級別)。當玩家收集所有金幣(當巨石陣列長度爲< = 0時),然後goToAndStop(nextLevel),再次從場景中獲取黃金級的MovieClip,如果它的名字是==「Gold」,那麼把它放在巨石[ ]。 發生了什麼: 在第一層(第2幀導致第1幀是預加載器)一切都很好 - 我在舞臺上(設計模式)有2個黃金影片剪輯,並且所有2個黃金都放入陣列並顯示出來。 在第二級我有4金,只有他們2放入陣列並顯示。 在第三級,我有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); 
      } 

在這裏,我添加名稱爲「金」所有的孩子在巨石陣,把他們在舞臺上。 然後添加Pod和杆。

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個動畫片段與名稱「黃金」,並在第3幀中有5個名爲「黃金」的影片剪輯,只顯示兩個影片剪輯導致其他3仍存在。我試試這個:MovieClip(root).removeChild(boulder);在removeBoulder函數中,但它不起作用。 – Mariyan 2012-01-30 14:58:47

+0

好的我找到了解決方案:-)我在每個關鍵幀(關卡幀)之間留下了一個空白的關鍵幀。那是有效的。現在我的nextLevel var每次增加2次,而不是增加一次。 – Mariyan 2012-01-30 15:44:05

回答

0

到有關全球性

當您創建閃光的東西

任何問題,最簡單的解決首先添加的空MovieClip給它的一個實例,如遊戲或測驗比雙擊進入你的電影剪輯,然後讓你的項目GoBack的到主要的時間線鍵入所有的代碼,現在所有的變量,什麼不能輕鬆全球