Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1670
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    derz derz ist offline Grünschnabel
    Registriert seit
    Nov 2009
    Ort
    Zürich
    Beiträge
    4
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    
    <?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
     

  2. #2
    Irresponder Irresponder ist offline Mitglied Gold
    Registriert seit
    Jan 2002
    Ort
    Ronsberg (Kempten/Allgäu)
    Beiträge
    101
    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.)
     
    Erfahrung ist die Summe der gemachten Fehler.

Ähnliche Themen

  1. [C#] Timer macht Programm unheimlich langsam!
    Von der jonas im Forum .NET Café
    Antworten: 5
    Letzter Beitrag: 27.10.08, 08:30
  2. Explorer langsam, wenn ein Netzlaufwerk langsam
    Von Coalminer im Forum Microsoft Windows
    Antworten: 0
    Letzter Beitrag: 15.06.06, 15:58
  3. vba timer
    Von RulerofDarkness im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 30.11.05, 14:49
  4. Timer zu langsam?
    Von Kanonenfutter im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 05.04.05, 19:05
  5. Timer
    Von lindin im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 13.08.04, 16:28

Stichworte