これをどのようにオーバーライドしますか?
時間を適切にカウントするスクリプトでもDateクラスを使用するだけです。
- 新しい AS3 ドキュメントを作成する
- minText、secText、MilText という名前の 3 つのテキスト ボックスと、start_btn というボタンを追加します。
- 最初のフレームに次のコードを追加します。
var stt:int;// この変数を使用して開始時刻をタイムスタンプとして追跡します
var myTimer:Timer = new Timer(1); // これはタイマーです
var starttime:Date; // pretty obvious
var actualtime:Date; // pretty obvious
myTimer.addEventListener(TimerEvent.TIMER, stopWatch); // we start counting with this counter
start_btn.addEventListener(MouseEvent.CLICK, startClock); // add a button listener to start the timer
function startClock(event:MouseEvent):void
{
starttime = new Date(); // we get the moment of start
stt = int(starttime.valueOf().toString()); // convert this into a timestamp
myTimer.start(); // start the timer (actually counter)
}
function stopWatch(event:TimerEvent):void
{
actualtime = new Date(); // we get this particular moment
var att:int = int(actualtime.valueOf().toString()); // we convert it to a timestamp
// here is the magic
var sec:int = (Math.floor((att-stt)/1000)%100)%60; // we compute an absolute difference in seconds
var min:int = (Math.floor((att-stt)/1000)/60)%10; // we compute an absolute difference in minutes
var ms:int = (att-stt)%1000; // we compute an absolute difference in milliseconds
//we share the result on the screen
minText.text = String(min);
secText.text = String(sec);
milText.text = String(ms);
}
タイムスタンプが必要なのに、Date クラスの関数を使用しないのはなぜですか?
2 つのイベントの差を数えたい場合は、おそらく次のようにします。
endEvent.seconds - startEvent.seconds
開始イベントが 57 秒で発生し、終了イベントが 17 秒で発生した場合、これは非常に間違っています。20 秒ではなく、-40 秒となります。