2012-03-18 4 views
0

У меня здесь есть игра с памятью. И каждый раз, когда карта удаляется с игрового поля, у меня есть «cardCount -2», когда этот cardCount достигает нуля, я хочу, чтобы программа переходила к следующему кадру, который похож на страницу «игра поверх». Я попытался использовать gotoAndStop(); а также nextFrame(); но он, похоже, не работает!Как перейти к следующему фреймворку кадра 3

На моем кадре 1 У меня есть игра, а на кадре 2 у меня есть страница, посвященная игре.

Любая помощь была бы высоко оценена! Спасибо!

Вот мой код!

package { 
import flash.display.Sprite; 
import flash.events.MouseEvent; 
import flash.events.TimerEvent; 
import flash.utils.Timer; 
import flash.display.MovieClip; 

public class MemoryGame extends Sprite{ 

    private var firstTile:cards; 
    private var secondTile:cards; 
    private var pauseTimer:Timer; 
    private var levelTimer:Timer; 
    private var score:int; 
    private var cardCount:int; 




    var numberDeck:Array = new Array(1,1,2,2,3,3,4,4,5,5,6,6); 


    public function MemoryGame(){ 
     score = 0; 
     txtScore.text=": "+score; 


     for(x=1; x<=4; x++) { 
      for (y=1; y<=3; y++){ 
       var randomCard = Math.floor(Math.random()*numberDeck.length); 
       var tile:cards = new cards(); 
       tile.card = numberDeck[randomCard]; 
       numberDeck.splice(randomCard,1); 
       tile.gotoAndStop(9); 
       tile.x = (x-1) * 150; 
       tile.y = (y-1) * 200; 
       tile.addEventListener(MouseEvent.CLICK,tileClicked); 
       addChild(tile); 
       cardCount = cardCount + 1 

       if (cardCount == 0){ 
      trace("GAME OVER!") 
      trace("SCORE:" +score); 
     } 


      } 
     } 
     trace("Cardcount: "+cardCount); 
    } 

    public function tileClicked(event:MouseEvent) { 
     var clicked:cards = (event.currentTarget as cards); 
     if (firstTile == null){ 
      firstTile = clicked; 
      firstTile.gotoAndStop(clicked.card); 
     } 
     else if (secondTile == null && firstTile != clicked){ 
      secondTile = clicked; 
      secondTile.gotoAndStop(clicked.card); 
      if (firstTile.card == secondTile.card){ 
       pauseTimer = new Timer(1000, 1); 
       pauseTimer.addEventListener(TimerEvent.TIMER_COMPLETE,removeCards); 
       pauseTimer.start(); 

      } 
      else { 
       pauseTimer = new Timer(1000, 1); 
       pauseTimer.addEventListener(TimerEvent.TIMER_COMPLETE,resetCards); 
       pauseTimer.start(); 
      } 
     } 

    } 

    public function resetCards(event:TimerEvent) { 

     firstTile.gotoAndStop(9); 
     secondTile.gotoAndStop(9); 
     firstTile = null; 
     secondTile = null; 
     pauseTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,resetCards); 
     score = score - 2; 
     txtScore.text=": "+score; 
    } 

    public function removeCards(event:TimerEvent){ 

     removeChild(firstTile); 
     removeChild(secondTile); 
     firstTile = null; 
     secondTile = null; 
     pauseTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,removeCards); 
     score = score + 10; 
     txtScore.text=": "+score; 
     cardCount = cardCount - 2; 
     trace("Cardcount: " + cardCount); 

     if (cardCount == 0){ 
      //NEXT FRAME CODE HERE! 
      trace("GAME OVER!") 
      trace("SCORE:" +score); 
     } 

       } 


} 

}

+0

try 'root.gotoAndStop (2);' или 'MovieClip (this.parent) .gotoAndStop (2);' или 'MovieClip (this.parent.parent) .gotoAndStop (2);' – mgraph

ответ

1

Пробуйте продлить MemoryGame от MovieClip, а не от Sprite.

+0

Все еще не имеет значения :(Я схожу с ума! – DommyCastles

+0

Является ли 'MemoryGame' вашим основным классом? – Engineer

+0

Да, все это в коде выше. Мой весь код есть – DommyCastles

0

Если рамка находится на основной временной шкале, необходимо вызвать stage.gotoAndStop(2);.

+0

Я пробовал это и получите следующую ошибку: Звоните на возможно неопределенный метод gotoAndStop через ссылку со статическим типом flash.display: Этап – DommyCastles

+0

Я также пробовал event.target.parent.gotoAndStop (2), но он по-прежнему не работает! Я получаю «ReferenceError: Error # 1069: Свойство родитель не найден на flash.utils.Timer и нет значения по умолчанию \t в MemoryGame/removeCards() \t на flash.events::EventDispatcher/dispatchEventFunction() \t в. flash.events::EventDispatcher/dispatchEvent() \t at flash.utils :: Timer/tick() " – DommyCastles

+0

Не могли бы вы описать, как добавить сценарий MemoryGame на сцену? –

Смежные вопросы