Avatar billede Slettet bruger
21. marts 2003 - 15:55 Der er 9 kommentarer og
1 løsning

Delay i while

Hejsa..

Jeg har et MC som skifter højde efter en variable. Jeg kunne godt tænke mig at den ikke bare skiftede, men gjorde det smooth. Så jeg prøvede at sætte

onClipEvent (load) {
    setProperty (_this, _yscale, 0);
}
onClipEvent (enterFrame) {
    vartemp = int(_root.var1cr)/5;
    settemp = 0;
    while (tempcount != 5) {
        settemp = settemp+vartemp;
        setProperty (_this, _yscale, int(settemp));
        tempcount = tempcount+1;
    }
}

Men så er der jo ingen pause. Kunne man sætte et delay ind på 200 millisek her:

onClipEvent (load) {
    setProperty (_this, _yscale, 0);
}
onClipEvent (enterFrame) {
    vartemp = int(_root.var1cr)/5;
    settemp = 0;
    while (tempcount != 5) {
        settemp = settemp+vartemp;
        setProperty (_this, _yscale, int(settemp));
        tempcount = tempcount+1;
        // PAUSE
    }
}

Jeg har ikke lige kunne hitte af det. Er er en helt anden metode som er bedre?
Avatar billede mat Nybegynder
21. marts 2003 - 17:48 #1
Du kan bare bruge en almindelig enterframe til det, while løkker kan ikke bare pauses:

onClipEvent (enterFrame) {
if (tempcount <= 5) {
this._yscale += vartemp;
tempcount++;
}
}

noget ala ovenstående, håber du kan se ideen :)
Avatar billede mat Nybegynder
21. marts 2003 - 17:50 #2
den kommer selvfølgelig ikke ret langt på en count på 5 (5 frames) så du kunne jo måle på yscale istedet

onClipEvent (enterFrame) {
if (this._yscale <= 100) {
this._yscale += minVar;
}
}

:)
Avatar billede Slettet bruger
24. marts 2003 - 10:39 #3
Hmm.. tror ikke helt vi snakker om det samme.. :)

Jeg har lavet det her:

onClipEvent (load) {
    setProperty (_this, _yscale, 0);
}
onClipEvent (enterFrame) {
    _root.vartemp = int(_root.var1cr)/5;
    _root.settemp = "0";
    _root.tempcount = "0";
    if (_root.tempcount == "0") {
        _root.settemp = int(_root.settemp) + int(_root.vartemp);
        setProperty (_this, _yscale, _root.settemp);
        _root.delay1.gotoAndPlay("play1");
        _root.tempcount = "1";
    }
    if ((_root.tempcount == "1") & (_root.go2 == "true") ) {
        _root.settemp = int(_root.settemp) + int(_root.vartemp);
        setProperty (_this, _yscale, _root.settemp);
        _root.tempcount = int(_root.tempcount) + 1;
        _root.delay2.gotoAndPlay("play2");
    }
    if ((_root.tempcount == 2) & (_root.go3 == "true") ) {
        _root.settemp = int(_root.settemp) + int(_root.vartemp);
        setProperty (_this, _yscale, _root.settemp);
        _root.tempcount = int(_root.tempcount) + 1;
        _root.delay3.gotoAndPlay("play3");
    }
    if ((_root.tempcount == 3) & (_root.go4 == "true") ) {
        _root.settemp = int(_root.settemp) + int(_root.vartemp);
        setProperty (_this, _yscale, _root.settemp);
        _root.tempcount = int(_root.tempcount) + 1;
        _root.delay4.gotoAndPlay("play4");
    }
    if ((_root.tempcount == 4) & (_root.go5 == "true") ) {
        _root.settemp = int(_root.settemp) + int(_root.vartemp);
        setProperty (_this, _yscale, _root.settemp);
        _root.tempcount = int(_root.tempcount) + 1;
        _root.delay5.gotoAndPlay("play5");
    }
}
Avatar billede mat Nybegynder
24. marts 2003 - 16:35 #4
Ovenstående siger mig ikke ret meget.

Hvor er while-løkken henne?

Du efterlyser et script der kan lave en smooth transition fra en skalering til en anden eller hvad? Det gør nedenstående og variablen hedder slut_scale:

onClipEvent (load) {
    slut_scale = 400;
    friction = 4;
}
onClipEvent (enterFrame) {
        this._yscale += (slut_scale - this._yscale)/friction;
}

mvh mat
Avatar billede Slettet bruger
31. marts 2003 - 11:24 #5
Jamen, den udfører helt scriptet og så viser den det, derfor har jeg lavet nogle mc's med delay.
Avatar billede mat Nybegynder
31. marts 2003 - 14:22 #6
jeg fatter ikke en bjælde af hvad du snakker om?

Du kan IKKE få en for-løkke til at vise sine gennemløb enkeltvis - den løber igennem og giver dig et "output" - thats it...
Avatar billede mat Nybegynder
31. marts 2003 - 14:27 #7
..eller en while for den sags skyld - samme ting :)
Avatar billede Slettet bruger
31. marts 2003 - 15:01 #8
Ja.. det er jo det... men jeg har nu fået lavet delay hehe... :)

Jeg lukker, hvis det er ok med dig?
Avatar billede mat Nybegynder
31. marts 2003 - 15:38 #9
Hvordan gjorde du så? Du lukker bare lige så meget som du lyster :)
Avatar billede Slettet bruger
24. maj 2004 - 09:40 #10
Så lige det gamle spørgsmål her... Koden blev: (tror jeg) :)
Det er jo lidt længe siden nu...

onClipEvent (load) {
    setProperty(_this, _yscale, 0);
    _root.pill1oldoldheight = 0;
    _root.pill1smallpiececounter = 0;
}
onClipEvent (enterFrame) {
    _root.pill1newoldheight = _root.var1cr;
    _root.pill1heightdiff = int(_root.pill1newoldheight)-int(_root.pill1oldoldheight);
    _root.pill1piecesize = int(_root.pill1heightdiff)/5;
    _root.pill1piecesize = int(Math.ceil(_root.pill1piecesize));
    if (_root.pill1largepiececounter == 0) {
        _root.pill1oldheight = int(_root.pill1oldheight)+int(_root.pill1piecesize);
        setProperty(_this, _yscale, _root.pill1oldheight);
        _root.pill1largepiececounter = 1;
        _root.pill1delay1.gotoAndPlay("play1");
    }
    if ((_root.pill1largepiececounter == 1) && (_root.pill1go2 == true)) {
        _root.pill1oldheight = int(_root.pill1oldheight)+int(_root.pill1piecesize);
        setProperty(_this, _yscale, _root.pill1oldheight);
        _root.pill1largepiececounter = 2;
        _root.pill1delay2.gotoAndPlay("play2");
    }
    if ((_root.pill1largepiececounter == 2) && (_root.pill1go3 == true)) {
        _root.pill1oldheight = int(_root.pill1oldheight)+int(_root.pill1piecesize);
        setProperty(_this, _yscale, _root.pill1oldheight);
        _root.pill1largepiececounter = 3;
        _root.pill1delay3.gotoAndPlay("play3");
    }
    if ((_root.pill1largepiececounter == 3) && (_root.pill1go4 == true)) {
        _root.pill1oldheight = int(_root.pill1oldheight)+int(_root.pill1piecesize);
        setProperty(_this, _yscale, _root.pill1oldheight);
        _root.pill1largepiececounter = 4;
        _root.pill1delay4.gotoAndPlay("play4");
    }
    if ((_root.pill1largepiececounter == 4) && (_root.pill1go5 == true)) {
        _root.pill1oldheight = int(_root.pill1oldheight)+int(_root.pill1piecesize);
        setProperty(_this, _yscale, _root.pill1oldheight);
        _root.pill1largepiececounter = 5;
        _root.pill1delay5.gotoAndPlay("play5");
        _root.pill1largepiececounter = 0;
    }
    if (int(_root.pill1heightdiff)<0 && int(_root.pill1heightdiff)>-5 && int(_root.pill1heightdiff) != 0) {
        _root.pill1remainpice = 0;
        _root.pill1remainpice = int(_root.pill1heightdiff)*-1;
        if (int(_root.pill1smallpiececounter) != int(_root.pill1remainpice) || int(_root.pill1remainpice) == 1) {
            _root.pill1oldheight = int(_root.pill1oldheight)-1;
            setProperty(_this, _yscale, _root.pill1oldheight);
            _root.pill1smallpiececounter = int(_root.pill1smallpiececounter)+1;
        }
        if (int(_root.pill1smallpiececounter) == int(_root.pill1remainpice)) {
            _root.pill1piecesize = 0;
            _root.pill1smallpiececounter = 0;
        }
    }
    _root.pill1oldoldheight = int(_root.pill1oldheight);
    _root.pill1go2 = false;
    _root.pill1go3 = false;
    _root.pill1go4 = false;
    _root.pill1go5 = false;
}
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