derz
Grünschnabel
Hallo zusammen!
Ich habe mich neulich etwas in Flex eingearbeitet. Nun wollte ich einen Timer programmieren, der 3 Minuten lang läuft. Ich habe bereits folgenden Code:
Dieser läuft auch bis 180 Sekunden, jedoch ist er scheinbar etwas zu langsam - wenn ich nebenbei die Zeit mitstoppe, ist der Timer etwa 3 Sekunden zu langsam. Dies zeigt sich auch bei dem folgenden Code (oben auskommentiert):
counter.text = dateFormatter.format(d);
progressBar.label = dateFormatter.format(d);
Hier zählt der Timer bis 3 Minuten & 3 Sekunden hoch und stoppt erst dann, ich möchte jedoch dass er bereits bei 3 Minuten stoppt.
Kennt jemand dieses Problem & die Lösung? Oder habe ich Fehler in der programmierung?
Liebe Grüsse
Derz
Ich habe mich neulich etwas in Flex eingearbeitet. Nun wollte ich einen Timer programmieren, der 3 Minuten lang läuft. Ich habe bereits folgenden Code:
Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.utils.Timer;
import flash.events.TimerEvent;
private const TIMER_INTERVAL:int = 1000;
private const TIMER_TIME:int = 3 * 60; //Sekunden
private var baseTimer:int;
private var t:Timer;
private var i:int = 0;
private function init():void {
t = new Timer(TIMER_INTERVAL, TIMER_TIME);
t.addEventListener(TimerEvent.TIMER, updateTimer);
t.addEventListener(TimerEvent.TIMER_COMPLETE, timerComplete);
}
private function timerComplete(evt:TimerEvent):void {
trace("timer complete");
counter.text = "Zeit abgelaufen";
}
private function updateTimer(evt:TimerEvent):void {
var d:Date = new Date(getTimer() - baseTimer);
//counter.text = dateFormatter.format(d);
//progressBar.label = dateFormatter.format(d);
counter.text = t.currentCount.toString();
progressBar.setProgress(t.currentCount, TIMER_TIME);
}
private function startTimer():void {
baseTimer = getTimer();
t.start();
}
private function stopTimer():void {
t.stop();
}
]]>
</mx:Script>
<mx:DateFormatter id="dateFormatter" formatString="NN:SS" />
<mx:ApplicationControlBar dock="true">
<mx:Button label="Start timer" click="startTimer()" />
<mx:Button label="Stop timer" click="stopTimer()" />
</mx:ApplicationControlBar>
<mx:Label id="counter" fontSize="96" />
<mx:ProgressBar id="progressBar" label="" mode="manual" minimum="0" maximum="{TIMER_TIME}" />
</mx:Application>
Dieser läuft auch bis 180 Sekunden, jedoch ist er scheinbar etwas zu langsam - wenn ich nebenbei die Zeit mitstoppe, ist der Timer etwa 3 Sekunden zu langsam. Dies zeigt sich auch bei dem folgenden Code (oben auskommentiert):
counter.text = dateFormatter.format(d);
progressBar.label = dateFormatter.format(d);
Hier zählt der Timer bis 3 Minuten & 3 Sekunden hoch und stoppt erst dann, ich möchte jedoch dass er bereits bei 3 Minuten stoppt.
Kennt jemand dieses Problem & die Lösung? Oder habe ich Fehler in der programmierung?
Liebe Grüsse
Derz