Avatar billede soelle Nybegynder
18. januar 2007 - 21:08 Der er 10 kommentarer og
1 løsning

Tidstagning i spil

Jeg har en funktion der tager tid på at gennemføre en bane. Når man når næste bane skal tiden stoppe indtil brugeren aktivere næste level. Problemet er nu, at når næste level aktiveres tracer tiden også den tid der er gået mellem levels. Jeg har brugt nedenstående koder:

aktiverKnapper = function () {
        if (timing == null) {
        tidBrugtStart = getTimer()/1000;
    }
    function brugtTid() {
        tidBrugt = (getTimer()/1000-tidBrugtStart);
        minutes_mc.text = minutes;
        seconds_mc.text = seconds;
        timing = true;
        if (timing) {
            minutes = Math.floor((tidBrugt/3600-hours)*60);
            seconds = Math.floor(((tidBrugt/3600-hours)*60-minutes)*60);
            if (seconds<10) {
                seconds = "0"+seconds;
            }
            if (minutes<10) {
                minutes = "0"+minutes;
            }
        }
    }
    brugtTid_interval = setInterval(brugtTid, 1000);
};


levelDone = function () {
    clearInterval(brugtTid_interval);
    levelNummer++;
}
Avatar billede mat Nybegynder
18. januar 2007 - 21:48 #1
Hvis det er meningen at "tidBrugtStart" skal resettes skal du vel lige sætte timing til null? Derudover er det noget hø at have funktionsdefinitioner i funktioner, du skal jo ikke redefinere din brugtTid funktion hver gang du kalder aktiverKnapper?

mvh mat
Avatar billede soelle Nybegynder
18. januar 2007 - 21:52 #2
Jeg prøver at flytte den ud af funktionen. Mener du jeg skal resette ved at sige tidBrugtStart-tidBrugt i levelDone funktionen?
Avatar billede soelle Nybegynder
18. januar 2007 - 22:06 #3
Så læste jeg faktisk også hvad du skrev. Jeg har nu tilføjet timing=null i levelDone funktionen. Nu starter counteren så bare forfra i næste level. Det er meningen den skal fortsætte hvor den slap.
Avatar billede soelle Nybegynder
18. januar 2007 - 22:17 #4
Nu lavede jeg levelDone funktionen sådan her:

levelDone = function () {
    timing = null;
    preTimer = tidBrugt;
    clearInterval(brugtTid_interval);
    levelNummer++;
};

og indsatte dette i brugtid funktionen:

    if (levelNummer == 1) {
        tidBrugt = (getTimer()/1000-tidBrugtStart);
    } else {
        tidBrugt = (((getTimer()/1000)-tidBrugtStart)+preTimer);
    }

og det ser ud til at virke. Men er det den optimale måde at gøre det på?
Avatar billede alexander_j Nybegynder
19. januar 2007 - 14:59 #5
Det er altid sjovt at lege med tid, så jeg har lavet et eksempel til dig på hvordan man kan lave et stopur med pauseknap (alle tastaturknapper virker i mit eksempel) :-D

this.createTextField("tf_tid",1,0,0,100,25);
this.createTextField("tf_pause",2,0,25,100,25);
tid_pause = true;

start_tid = getTimer()/1000;
tid = start_tid;
pause_start = tid;
this.onEnterFrame = function(){
    tid = getTimer()/1000 - start_tid;
       
    if(!tid_pause){
        timer = Math.floor ( tid / 3600 );
        minutter = Math.floor ( tid / 60 ) - timer * 60;
        sekunder = Math.floor ( tid ) - timer * 3600 - minutter * 60;
        if(timer>9) tf_tid.text = timer;
        else tf_tid.text = "0"+timer;
        if(minutter>9) tf_tid.text += ":"+minutter;
        else tf_tid.text += ":0"+minutter;
        if(sekunder>9) tf_tid.text += ":"+sekunder;
        else tf_tid.text += ":0"+sekunder;
    }
}

myListener = new Object();
myListener.onKeyUp = function () {
    if(tid_pause){
        tid_pause = false;
        start_tid += tid- pause_start;
        tf_pause.text = "kør";
    } else {
        tid_pause = true;
        pause_start = tid;
        tf_pause.text = "pause";
    }
}
Key.addListener(myListener);
Avatar billede soelle Nybegynder
19. januar 2007 - 15:13 #6
Super. Tak. Det andet jeg skrev tidligere ser ud til at virke. Kan du se nogle ulemper ved at gøre det på den måde eller er det rigtigt at gøre det på den måde?
Avatar billede alexander_j Nybegynder
19. januar 2007 - 19:33 #7
If it works - dont fix it ;-)
Avatar billede soelle Nybegynder
06. marts 2007 - 12:22 #8
Nogen der vil have point her?
Avatar billede alexander_j Nybegynder
06. marts 2007 - 15:09 #9
Hvis du kunne bruge det jeg skrev, så ja, ellers ikke.
Avatar billede soelle Nybegynder
19. marts 2007 - 16:13 #10
efter som du er den eneste der har svaret så får du noget for ulejligheden
Avatar billede alexander_j Nybegynder
19. marts 2007 - 17:10 #11
Jamen så tak da.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester