AS3:基于计时器的分数

AS3: Score based on timer

我正在 AS3 中制作游戏,我一直在尝试根据游戏开始后的时间来计算分数,分数会在游戏结束时显示,基本上是游戏后的秒数开始乘以 1000。但是我正在努力了解如何做这样的事情,因为我已经在单独的 class 中制作了计时器并且我正在尝试将分数添加到主文档 class .

这是我尝试过的方法:

主要class:

score.affichageScore.text = "votre score: " + chrono.seconds * 1000;

这里是计时器 class,我在其中使用了日期 class:

package cem {

    import flash.display.MovieClip;
    import flash.events.*;


    public class Chronometre extends MovieClip {

        var begin: Date;
        public var seconds: uint = 0;

        public function Chronometre() {
            // constructor code



        }

        //************************************************Start the chrono*********************************************//
        public function start() {
            begin= new Date();
            this.addEventListener(Event.ENTER_FRAME, _actualize);

        }

        //************************************************Stop the chrono*********************************************//
        public function stop() {

            this.removeEventListener(Event.ENTER_FRAME, _actualize);

        }

        //************************************************Actualize the chrono*********************************************//
        private function _actualize(e: Event) {
            var msSpent: uint = new Date().getTime() - begin.getTime();



            seconds = Math.floor(msSpent/ 1000);
            var milliseconds: uint = msSpent- (seconds * 1000);

            affichage.text = seconds + ":" + milliseconds;

        }


    }

}

明显的问题是如何从计时器class中获取''seconds''变量值到主class中的''score''变量?

请不要在每一帧上创建新日期 - 这是性能方面最差的选项。正如 null 所提到的,有一个计时器 class 可以计算时间,但它可以更容易:

getTimer();

此 returns 自 swf 启动以来的毫秒数。所以你可以在你的主游戏中直接这样做 class:

// when the game starts
gameStartTime = getTimer();

// when the game ends
gameEndTime = getTimer();

// calculate score with one point for each millisecond 
// (might be even better so that your scores won't always end in 000)
myScore = gameEndTime - gameStartTime;

// 1000 points for each second:
seconds = Math.floor((gameEndTime - gameStartTime) / 1000);
myScore = seconds * 1000;