如何在对象中收集计时器字符串数据

时间:2015-05-28 12:01:49

标签: actionscript-3 flash oop

我有一个简单的计时器,可以实时显示毫秒,秒和分钟。当满足某个条件时,触发停止计时器。我很困惑如何将时间存储在一个对象中,然后在最短的时间内首先显示。

var timer:Timer = new Timer(100);
timer.start();
timer.addEventListener(TimerEvent.TIMER, timerTickHandler);
var timerCount:int = 0;

function timerTickHandler(Event:TimerEvent):void
{
    timerCount += 100;
    toTimeCode(timerCount);
}

function toTimeCode(milliseconds:int) : void 
{
//creating a date object using the elapsed milliseconds
var time:Date = new Date(milliseconds);

//define minutes/seconds/mseconds
var minutes:String = String(time.minutes);
var seconds:String = String(time.seconds);
var miliseconds:String = String(Math.round(time.milliseconds)/100);

//add zero if neccecary, for example: 2:3.5 becomes 02:03.5
minutes = (minutes.length != 2) ? '0'+minutes : minutes;
seconds = (seconds.length != 2) ? '0'+seconds : seconds;

//display elapsed time on in a textfield on stage
timer_txt.text = minutes + ":" + seconds+"." + miliseconds;
}

如果单击按钮,我也有一个按钮,它将布尔值设置为true。

var btn1:Button;
var buttonClckd:Boolean;

if (buttonClckd == true) {
            timer.stop();
            timeTxt.type = myUsers.userTime;
            trace(myUsers.userTime);
            trace("Btn1 Click == true");
        }


btn1.addEventListener(MouseEvent.CLICK, btn1Clicked);



public function btn1Clickd(e: MouseEvent):void {
        trace("btn1 Clicked");
        buttonClckd = true;


    }

不幸的是,我没有得到" Btn1 Click == true"

2 个答案:

答案 0 :(得分:0)

主要观点:

var startingDate:Date;
var compareDate:Date;
var startingTime:uint;
var compareTime:uint;

当你开始游戏时,你会启动这些变量(例如在启动函数中):

startingDate = new Date();
compareDate = new Date();
compareDate.time = startingDate.time;
startingTime = getTimer();
compareTime = 0;

现在您启动一个enterframe或计时器并重置您的时间:

compareTime = getTimer() - startingTime;
compareDate.time = startingDate.time + compareTime;
var elapsedTime:uint = compareDate.time - startingDate.time;

现在,elapsedTime保持正确的时间。

如果你想暂停:

var pauseStart:uint;
暂停功能

pauseStart = getTimer();
恢复功能中的

startingTime += getTimer() - pauseStart;
startingDate.time += getTimer() - pauseStart;

现在,您可以使用elapsedTime获得准确的时间系统,从而为您提供自开始以来的正确时间。

关于你的问题,你需要存储的只是毫秒,所以在这种情况下,elapsedTime,较短的是最短的时间。

答案 1 :(得分:-1)

您可以使用| Name | Number | % of total | | ------------- |:-------------:| -----: | | Bob | 5 | 25 | | Sally | 10 | 50 | | John | 5 | 25 | 功能将Date.UTC()对象转换为Date,您可以轻松地比较并选择时间较短的对象。

并且,在您的情况下,使用Number是过度的,因为您已经有几毫秒的时间来直接导出秒和分钟。同样比较毫秒,比比较Date对象要容易得多。

Date

最后,为了比较当前或最后的毫秒,你必须存储最顶层的值(或它们的列表,你已经说过你有一个),然后只需要遍历那个集合,填充当前值进入数组的正确位置。