2011-05-13 4 views
1

일치하는 게임을하고 있습니다. adobeFlash, actionScript3.0을 사용하고 있습니다. 내가 n은 .. 그 코딩을 삽입 할 ... 어떻게 게임이 켜진 상태에서 타이머를 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 줄을 추가; \t \t \t * gameScoreField.y = 50; \t \t \t gameScoreField.text = "점수 :"+ 문자열 (gameScore); \t \t \t \t} \t \t 공개 방영 함수 (이벤트 이벤트) { \t \t \t gameTimeField.scaleX * = 19; \t \t \t * gameTimeField.y = 50; \t \t \t gameTime = getTimer() - gameStartTime; \t \t \t gameTimeField.text = "시간 :"+ clockTime (gameTime); \t \t} – juju

답변

0

당신이 (수평)으로 DisplayObject 부모의 DisplayObject를 정렬 할 , 단지 같은 것을 할 : 코드 예제에서

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

아이의 DisplayObject가 완전히 그려진이 삽입되어야

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

같은이 될 일을 그 w 있도록 너비는 알려져 있습니다. U 수동 \t \t \t gameScoreField.scaleX * =210 x 및 y axis..public showGameScore 함수()를 변경할 수 {THN

관련 문제