2013-04-30 5 views
1

Je crée le jeu Flash "memory", Idea pour découvrir 2 cartes égales. Mais quand je choisis 1, si la seconde carte est fausse elle ne découvre que pour une demi-seconde, mais ce n'est pas suffisant. J'ai besoin de faire que cette deuxième carte sera montrée pendant 2-3 secondes. Comment puis-je ajouter une minuterie?Action Script 3. Comment ajouter une minuterie?

Voici une partie du code:

 else 
     { 
      trace("wrong"); 
      _message = "wrong"; 
      message_txt.text = _message; 
      _firstCard.gotoAndPlay("flipBack"); 
      event.currentTarget.gotoAndPlay("flipBack"); 
      _firstCard.addEventListener(MouseEvent.CLICK, checkCards); 
      event.currentTarget.addEventListener(MouseEvent.CLICK, checkCards); 
      _firstCard = undefined;    
     } 

Merci pour les réponses.

AVEC CODE COMPLET MISE À JOUR

package 
{ 
    import flash.display.MovieClip; 
    import Card; 
    import Boarder; 
    import BlueBoard; 
    import flash.events.MouseEvent; 
    import RedBoard; 
    import Snow; 

    public class MemoryGame extends MovieClip 
    { 
     private var _card:Card; 
     private var _boarder:Boarder; 
     private var _blueBoard:BlueBoard; 
     private var _cardX:Number; 
     private var _cardY:Number; 
     private var _firstCard:*; 
     private var _totalMatches:Number; 
     private var _currentMatches:Number; 
     private var _redBoard:RedBoard; 
     private var _snow:Snow; 
     private var _cards:Array; 
     public var _message:String; 

     public function MemoryGame() 
     { 
      _cards = new Array(); 
      _totalMatches = 4; 
      _currentMatches = 0; 
      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 + 50; 
       _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 + 50; 
       _card.addEventListener(MouseEvent.CLICK, checkCards); 
       _cards.push(_card); 
      } 

      _cardX = 45; 
      _cardY = _card.height + 30; 

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

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

      randomizeCards(_cards); 
     } 

     private function checkCards(event:MouseEvent):void 
     { 
      event.currentTarget.removeEventListener(MouseEvent.CLICK, checkCards); 

      if(_firstCard == undefined) 
      { 
       _firstCard = event.currentTarget; 
      } 
      else if(String(_firstCard._type) == String(event.currentTarget._type)) 
      { 
       trace("match"); 
       _message = "match"; 
       message_txt.text = _message; 
       _firstCard = undefined; 
       _currentMatches ++; 
       if(_currentMatches >= _totalMatches) 
       { 
        trace("YOU WIN !!!"); 
        _message = "YOU WIN !!!"; 
        message_txt.text = _message; 
       } 
      } 
      else 
      { 
       trace("wrong"); 
       _message = "wrong"; 
       message_txt.text = _message; 
       _firstCard.gotoAndPlay("flipBack"); 
       event.currentTarget.gotoAndPlay("flipBack"); 
       _firstCard.addEventListener(MouseEvent.CLICK, checkCards); 
       event.currentTarget.addEventListener(MouseEvent.CLICK, checkCards); 
       _firstCard = undefined;    
      } 
     } 

     private function randomizeCards(cards:Array):void 
     { 
      var randomCard1:Number; 
      var randomCard2:Number; 
      var card1X:Number; 
      var card1Y:Number; 

      for(var i:Number = 0; i < 10; i++) 
      { 
       randomCard1 = Math.floor(Math.random() * cards.length); 
       randomCard2 = Math.floor(Math.random() * cards.length); 

       card1X = cards[randomCard1].x; 
       card1Y = cards[randomCard1].y; 
       cards[randomCard1].x = cards[randomCard2].x; 
       cards[randomCard1].y = cards[randomCard2].y 
       cards[randomCard2].x = card1X; 
       cards[randomCard2].y = card1Y; 
      } 
     } 
    } 
} 

Répondre

1

Vous pouvez utiliser http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html. BTW, notez que le second paramètre par défaut du constructeur du Timer est 0, ce qui implique que le timer s'exécuterait indéfiniment. Assurez-vous de marquer cela comme 1 pour votre cas.

Vous devez déplacer le code dans votre bloc 'else' vers une autre fonction et configurer le temporisateur dans le bloc else.

Le code final ressemblerait à quelque chose comme ceci:

else 
{ 
    trace("wrong"); 
    _message = "wrong"; 
    message_txt.text = _message; 

    _secondCard = event.currentTarget;//You need to have this variable defined alongwith _firstCard 

    var timer:Timer = new Timer(2000, 1); 
    timer.addEventListener(TimerEvent.TIMER_COMPLETE, flipBack); 
    timer.start(); 
} 

et la fonction aurait:

protected function flipBack(event:TimerEvent):void 
{ 
    _firstCard.gotoAndPlay("flipBack"); 
    _sedondCard.gotoAndPlay("flipBack"); 
    _firstCard.addEventListener(MouseEvent.CLICK, checkCards); 
    _secondCard.addEventListener(MouseEvent.CLICK, checkCards); 
    _firstCard = _secondCard = undefined;    
} 

HTH.

+0

Merci beaucoup pour la réponse, mais je ne compris vraiment où je dois utilise ce constructeur. Et quoi de 2ème paramètre? Pourriez-vous m'aider un peu plus? –

+0

Mis à jour ma réponse avec un exemple. – catholicon

+0

Merci pour les réponses, je vais essayer. J'ai mis à jour ma question avec le code complet si vous avez besoin de le voir –

Questions connexes