2012-01-30 3 views
0

광부 게임을 만들고 있습니다 (금이 있고 거기에 훅을 붙잡아 야합니다). Main 클래스를 수정하여 이름이 "Gold"인 MovieClip (루트)의 모든 자식을 가져 와서 나중에 충돌 충돌이있는 Array (boulders [])에 넣습니다 (스테이지에서 "Gold"MovieClips를 모든 수준). 플레이어가 모든 금을 수집하면 (boulders array.length가 < = 0 일 때) goToAndStop (nextLevel), 스테이지에서 골드 무비 클립을 가져오고 이름이 == "Gold"이면 볼더에 넣습니다 [ ]. 발생했습니다 : 첫 번째 레벨 (프레임 2는 프레임 1이 프리 로더이므로 모든 것이 좋습니다) - 무대에 2 개의 금메달 클립 (디자인 모드에서)이 있고 2 개의 금이 배열에 모두 표시되어 표시됩니다. 두 번째 레벨에서 나는 4 개의 금을 가지고 있고 그 중 2 개만 배열에 넣어 표시했습니다. 3 단계에서 무대에서 디자인 한 7 개의 금메달이 있지만 단지 3 개만 볼더 배열에 표시됩니다. 다음 프레임 골드 영화 클립 수에서 이전 프레임의 금 (gold)의 이전 계수가 거의 뺍니다. 누구 아이디어? 여기무대의 무비 클립이 사라졌습니다.

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 개의 MovieClip이 이름이 "gold"이고 프레임 3에 이름이 "gold"인 5 개의 MovieClip이 있고 다른 3 개가 여전히 존재하는 경우 두 개의 MovieClips 만 표시됩니다. 나는 이것을 시도한다 : MovieClip (root) .removeChild (boulder); removeBoulder 함수에서 작동하지만 작동하지 않습니다. – Mariyan

+0

OK 해결 방법 :-) 모든 키 프레임 (레벨 프레임) 사이에 빈 키 프레임을 남깁니다. 그리고 그것은 작동합니다. 이제 nextLevel var를 추가 할 때마다 다음 레벨로 갈 때마다 2 씩 증가합니다. – Mariyan

답변

0

먼저 빈을 추가 전역 속성

당신이 플래시에 뭔가를 만들

에 관한 문제에 대한 쉬운 해결책은 다음에 프로젝트 GoBack을 만들 같은 당신의 무비 클립으로 더블 클릭보다는 게임이나 퀴즈로에게 인스턴스를 제공 무비 클립 모든 코드를 타이핑하는 메인 타임 라인, 이제는 모든 변수와 전역 변수가 될 수없는 것

관련 문제