调整as3代码以触发鼠标事件

时间:2015-02-11 02:51:18

标签: actionscript-3 timer mouseevent 2d-games stopwatch

您好我发现这个定时器计数器非常有用的代码,但它在我播放文件时启动。我需要的是一种将其更改为MouseEvent.CLICK的方法,以便在用户按下按钮时启动,并在用户按下另一个按钮时停止。这可以吗?

import flash.utils.Timer;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.globalization.DateTimeFormatter;

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 {
//create a date object using the elapsed milliseconds
var time:Date = new Date(milliseconds);

//define minutes/seconds/mseconds
var hours:String = String(time.hours);
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
hours = (hours.length != 2) ? '0'+hours : hours;
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 = hours + ":" + minutes + ":" + seconds+"." + miliseconds;

}

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用timer.stop()timer.start()。这不是完全准确的,因为调用stop()start()基本上会重新启动当前延迟(100ms),但如果它足够好那么它应该可以工作。

另请注意,定时器代码不是完全准确的,因为Timer事件会根据帧速率和脚本执行时间以轻微的偏移量进行调度。要获得准确的计时器,您需要轮询getTimer(),但暂停和恢复会变得有点复杂。