2011-05-13 25 views
1

我正在做一個匹配game.using adobeFlash,actionScript3.0。我不知道如何使定時器Ñ比分中心當比賽開始時... n,其中插入這些編碼..如何將actionscript3.0中的對象計時器和分數與中心對齊

package { 
    import flash.display.*; 
    import flash.events.*; 
    import flash.text.*; 
    import flash.display.StageAlign; 
    import flash.utils.getTimer; 
    import flash.utils.Timer; 
    import flash.media.Sound; 
    import flash.media.SoundChannel; 

    public class MatchingGameObject10 extends MovieClip { 
     // game constants 
     private static const boardWidth:uint = 8; 
     private static const boardHeight:uint = 8; 
     private static const cardHorizontalSpacing:Number = 52; 
     private static const cardVerticalSpacing:Number = 52; 
     private static const boardOffsetX:Number = 300; 
     private static const boardOffsetY:Number = 200; 
     private static const pointsForMatch:int = 100; 
     private static const pointsForMiss:int = -5; 

     // variables 
     private var firstCard:Card10; 
     private var secondCard:Card10; 
     private var cardsLeft:uint; 
     private var gameScore:int; 
     private var gameStartTime:uint; 
     private var gameTime:uint; 


     // text fields 
     private var gameScoreField:TextField; 
     private var gameTimeField:TextField; 

     // timer to return cards to face-down 
     private var flipBackTimer:Timer; 

     // set up sounds 
     var theFirstCardSound:FirstCardSound = new FirstCardSound(); 
     var theMissSound:MissSound = new MissSound(); 
     var theMatchSound:MatchSound = new MatchSound(); 

     // initialization function 
     public function MatchingGameObject10():void { 
      // make a list of card numbers 
      var cardlist:Array = new Array(); 
      for(var i:uint=0;i<boardWidth*boardHeight/2;i++) { 
       cardlist.push(i); 
       cardlist.push(i); 
      } 

      // create all the cards, position them, and assign a randomcard face to each 
      cardsLeft = 0; 
      for(var x:uint=0;x<boardWidth;x++) { // horizontal 
       for(var y:uint=0;y<boardHeight;y++) { // vertical 
        var c:Card10 = new Card10(); // copy the movie clip 
        c.stop(); // stop on first frame 
        c.x = x*cardHorizontalSpacing+boardOffsetX; // set position 
        c.y = y*cardVerticalSpacing+boardOffsetY; 
        var r:uint = Math.floor(Math.random()*cardlist.length); // get a random face 
        c.cardface = cardlist[r]; // assign face to card 
        cardlist.splice(r,1); // remove face from list 
        c.addEventListener(MouseEvent.CLICK,clickCard); // have it listen for clicks 
        c.buttonMode = true; 
        addChild(c); // show the card 
        cardsLeft++; 
       } 
      } 

      // set up the score 
      gameScoreField = new TextField(); 
      //gameScoreField = center; 
      ////gameScoreField = center; 
      addChild(gameScoreField); 
      gameScore = 0; 
      showGameScore(); 

      // set up the clock 
      gameTimeField = new TextField(); 
      gameTimeField.x = 450; 

      //gameTimeField = center; 
      ////gameTimeField.stage = StageAlign.TOP; 
      addChild(gameTimeField); 
      gameStartTime = getTimer(); 
      gameTime = 0; 
      addEventListener(Event.ENTER_FRAME,showTime); 
     } 

     // player clicked on a card 
     public function clickCard(event:MouseEvent) { 
      var thisCard:Card10 = (event.target as Card10); // what card? 

      if (firstCard == null) { // first card in a pair 
       firstCard = thisCard; // note it 
       thisCard.startFlip(thisCard.cardface+2); 
       playSound(theFirstCardSound); 

      } else if (firstCard == thisCard) { // clicked first card again 
       firstCard.startFlip(1); 
       firstCard = null; 
       playSound(theMissSound); 

      } else if (secondCard == null) { // second card in a pair 
       secondCard = thisCard; // note it 
       thisCard.startFlip(thisCard.cardface+2); 

       // compare two cards 
       if (firstCard.cardface == secondCard.cardface) { 
        // remove a match 
        removeChild(firstCard); 
        removeChild(secondCard); 
        // reset selection 
        firstCard = null; 
        secondCard = null; 
        // add points 
        gameScore += pointsForMatch; 
        showGameScore(); 
        playSound(theMatchSound); 
        // check for game over 
        cardsLeft -= 2; // 2 less cards 
        if (cardsLeft == 0) { 
         MovieClip(root).gameScore = gameScore; 
         MovieClip(root).gameTime = clockTime(gameTime); 
         MovieClip(root).gotoAndStop("gameover"); 
        } 
       } else { 
        gameScore += pointsForMiss; 
        showGameScore(); 
        playSound(theMissSound); 
        flipBackTimer = new Timer(2000,1); 
        flipBackTimer.addEventListener(TimerEvent.TIMER_COMPLETE,returnCards); 
        flipBackTimer.start(); 
       } 

      } else { // starting to pick another pair 
       returnCards(null); 
       playSound(theFirstCardSound); 
       // select first card in next pair 
       firstCard = thisCard; 
       firstCard.startFlip(thisCard.cardface+2); 
      } 
     } 

     // return cards to face-down 
     public function returnCards(event:TimerEvent) { 
      firstCard.startFlip(1); 
      secondCard.startFlip(1); 
      firstCard = null; 
      secondCard = null; 
      flipBackTimer.removeEventListener(TimerEvent.TIMER_COMPLETE,returnCards); 
     } 

     public function showGameScore() { 
      gameScoreField.text = "Score: "+String(gameScore); 
     } 

     public function showTime(event:Event) { 
      gameTime = getTimer()-gameStartTime; 
      gameTimeField.text = "Time: "+clockTime(gameTime); 
     } 

     public function clockTime(ms:int) { 
      var seconds:int = Math.floor(ms/1000); 
      var minutes:int = Math.floor(seconds/60); 
      seconds -= minutes*60; 
      var timeString:String = minutes+":"+String(seconds+100).substr(1,2); 
      return timeString; 
     } 

     public function playSound(soundObject:Object) { 
      var channel:SoundChannel = soundObject.play(); 
     } 
    } 
} 
+0

只需添加HTE 4行* THNü可以手動修改x和y axis..public功能showGameScore(){ \t \t \t * gameScoreField.scaleX = 210; \t \t \t * gameScoreField.y = 50; \t \t \t gameScoreField.text =「Score:」+ String(gameScore); \t \t} \t \t \t 公共\t功能的showTime(事件:事件){ \t \t \t * gameTimeField.scaleX = 19; \t \t \t * gameTimeField.y = 50; \t \t \t gameTime = getTimer() - gameStartTime; gameTimeField.text =「Time:」+ clockTime(gameTime); \t \t} – juju 2011-05-13 08:58:43

回答

0

當你想在它的父(水平)對準一個DisplayObject的DisplayObject,只是這樣做:

child.x = (parent.width - child.width)/2; 

在你的代碼示例,這將是像

gameTimeField.x = (this.width - gameTimeField.width)/2; 

這應該被插入,當子DisplayObject完全畫,所以以其w寬度是已知的。