0

私はフラッシュゲームを作成していますが、奇妙な問題が発生します。メニューにいるときにタイマーがカウントを開始しますが、ゲームが開始されません。メニューには「再生」ボタンがあり、クリックするとタイマーが追加されますが、プログラムの実行時間(現在の時刻からの開始カウント)が表示されます。

これは開始するメイン関数です

        public function MemoryGame()
        {
            startMemoryGame.addEventListener(MouseEvent.CLICK, startPlay);
}

これはゲームを開始するためのボタンです:

function startPlay(e:MouseEvent):void
{
    startMemoryGame();

}

そして、ここにタイマーと他のオブジェクトが追加された私の関数があります。

    function startMemoryGame():void
            {


            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
            timer.addEventListener(TimerEvent.TIMER, resetTimer);
            txtTime = new TextField();



            var format:TextFormat = new TextFormat();
                format.font = "Verdana";
                format.color = "#E50041";
                format.size = 22;
            txtTime.border = true;
            txtTime.borderColor = 0xFFFFFF;
                //format.bold = true;  
            //txtTime.x = 250;
            txtTime.width/2;

            var stageCenter_x:Number = stage.stageWidth/2;
            var stageCenter_y:Number = stage.stageHeight/2;
            var textCenter_x:Number = txtTime.width/2;
            var textCenter_y:Number = txtTime.height/2;
            txtTime.x = stageCenter_x - textCenter_x;
            txtTime.y = 55;     
            txtTime.autoSize = TextFieldAutoSize.CENTER;
            txtTime.defaultTextFormat = format;
            message_txt.autoSize = TextFieldAutoSize.CENTER;
            message_txt.defaultTextFormat = format;

                //here Timer starts
                txtTime.text = showTimePassed(0);
            addChild(txtTime);
            tmpTime = timer.currentCount;
            timer.start();


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

            private function tick(e:Event):void {
            txtTime.text = showTimePassed(timer.currentCount - tmpTime);                    


    }
    function showTimePassed(startTime:int):String {

      var leadingZeroMS:String = ""; //how many leading 0's to put in front of the miliseconds
      var leadingZeroS:String = ""; //how many leading 0's to put in front of the seconds
      var leadingZeroM:String = "";

      var time = getTimer() - startTime; //this gets the amount of miliseconds elapsed
      var miliseconds = (time % 1000); // modulus (%) gives you the remainder after dividing, 

      if (miliseconds < 10) { //if less than two digits, add a leading 0
        leadingZeroMS = "0";
      }

      var seconds = Math.floor((time / 1000) % 60); //this gets the amount of seconds

      if (seconds < 10) { //if seconds are less than two digits, add the leading zero
        leadingZeroS = "0";
      }

      var minutes = Math.floor((time / (60 * 1000) ) );
        if (minutes < 10) { //if seconds are less than two digits, add the leading zero
        leadingZeroM = "0";
      }
      //60 seconds times 1000 miliseocnds gets the minutes
      return leadingZeroM + minutes + ":" + leadingZeroS + seconds ;
}

timer.start()「startPlay」ボタンをクリックした後、コマンドを削除すると同じ問題が発生するのは奇妙なことです。現在のタイマー(例:00:12)が追加され、タイマーが停止するだけです。

を使用しようとしましtimer.reset();たが、同じ問題なので、何が問題なのかわかりません。そして、以前に関数を使用したことがない場合、カウント時間を開始する理由がわかりません。私を手伝ってくれますか?どうもありがとうございました。

4

1 に答える 1