0

나는 플래시 메모리 게임을 만들고 아이디어는 2 개의 동등한 카드를 발견합니다. "다시 시도"버튼을 눌러 모든 카드를 제거하고 새 카드를 생성해야합니다. 나는액션 스크립트. 다시 시도 버튼을 사용하여 모든 객체 제거

function removeCards(e:MouseEvent):void 
{ 
    //for(var iv:Number = 0; iv < 18; iv++) 
{ 
    addEventListener(Event.ENTER_FRAME, remCards); 
    //} 
} 

function remCards(evt:Event):void 
{ 
    if (contains(_card)) { 
    removeChild(evt.currentTarget._card); 
    } 
} 

그러나 그것은 단지 마지막 카드를 제거합니다

여기
public function MemoryGame() 
{ 
    tryAgain.addEventListener(MouseEvent.CLICK, darKarta); 
     timer = new Timer(1000); //create a new timer that ticks every second. 
     timer.addEventListener(TimerEvent.TIMER, tick, false, 0, true); //listen for the timer tick 

     txtTime = new TextField(); 
     addChild(txtTime); 
     tmpTime = timer.currentCount; 
     timer.start(); 

    _cards = new Array(); 
    _totalMatches = 18; 
    _currentMatches = 0; 
    createCards(); 
} 

이 createCards 기능입니다 : 여기

주요 게임 기능 여기

private function createCards():void 
     { 
      _cardX = 45; 
      _cardY = 10; 

      for(var i:Number = 0; i < 2; i++) 
      { 
       _card = new Card(); 
       addChild(_card); 
       _boarder = new Boarder(); 
       _card.setType(_boarder); 
       _card.x = _cardX; 
       _card.y = _cardY; 
       _cardX += _card.width + 5; 
       _card.addEventListener(MouseEvent.CLICK, checkCards); 
       _cards.push(_card); 
      } 

      for(var j:Number = 0; j < 2; j++) 
      { 
       _card = new Card(); 
       addChild(_card); 
       _blueBoard = new BlueBoard(); 
       _card.setType(_blueBoard); 
       _card.x = _cardX; 
       _card.y = _cardY; 
       _cardX += _card.width + 5; 
       _card.addEventListener(MouseEvent.CLICK, checkCards); 
       _cards.push(_card); 
      } 
         for(var r:Number = 0; r < 2; r++) 
      { 
       _card = new Card(); 
       addChild(_card); 
       _penktas = new Penktas(); 
       _card.setType(_penktas); 
       _card.x = _cardX; 
       _card.y = _cardY; 
       _cardX += _card.width + 5; 
       _card.addEventListener(MouseEvent.CLICK, checkCards); 
       _cards.push(_card); 
      } 

그리고 removeCard 기능입니다 그들 모두를 삭제하는 방법을 모른다. 아이디어 있니? 고맙습니다.

답변

0

한 가지 방법은 모든 카드를 컨테이너에 넣고 무대에 직접 넣지 않고 MovieClip하는 것입니다.

CardContainer.addChild(_card); 

모든 카드를 제거하려면 CardContainer MovieClip을 제거하고 스테이지에 다시 추가하십시오. 또는 함수에서 다음과 같이 카드를 모두 제거 할 수 있습니다.

function removeCards(e:MouseEvent):void 
{ 
    while(CardContainer.numChildren > 0) 
    { 
     CardContainer.removeChildAt(0); 
    } 
} 
+0

고맙습니다. 오류가 발생했습니다 :'TypeError : 오류 # 1009 : null 개체 참조의 속성이나 메서드에 액세스 할 수 없습니다. '무엇이 문제입니까? 나는 개인적인'var CardContainer : Card;'를 사용했다. 그것은 좋은가? –

+0

MovieClip으로 CardContainer를 가져 와서 메인 MemoryGame 생성자 위에 선언하여 그 클래스 내의 모든 함수가 그 클래스에 액세스하여'MemoryGame()'내부의 스테이지에 추가 할 수 있도록합니다. 생성자 : private var CardContainer : MovieClip = new MovieClip(); 공공 기능 MemoryGame() { 하는 AddChild (CardContainer); 코드의' 가 // 나머지 여기 }' – yawar

+0

만 1 개 카드를 삭제, 지금은 오류없이 작동하지만, 처음과 같은, 감사 –