2015-02-11 158 views
0

嗨我发现这个非常有用的代码为计时器计数器,但它开始时,我玩文件。我需要的是一种将它变成MouseEvent.CLICK的方法,以便当用户按下按钮时启动,并在用户按下另一个按钮时停止。这是否有能力?Ajusting as3代码触发鼠标事件

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; 

} 

回答

0

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

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