Timer zu langsam

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:

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
 
Das kann möglicherweise passieren wenn der Debugger mitläuft... keine Ahnung warum aber ich habe unter OSX manchmal 10-20 Sekunden unterschied zu vermessen wenn ich den Timer benutze, der arbeitet leider sehr ungenau - wie in JavaScript - hängt immer nach Leistung des Systems ab (wieviel Frames schafft er von den 25 p.S.) ^^
 

Neue Beiträge

Zurück