15 berichten aan het bekijken - 1 tot 15 (van in totaal 15)
  • Q:
    Bijdrager
    vanWoods

    optellen in flash

    Ik heb een banner waarbij ik getal met een percentage van 0,0 naar bijv. 5,0% laat oplopen nu doe ik dit door voor elk getal een keyframe te maken. Door het toevoegen van een aantal foto’s wordt de banner te zwaar.

    Mijn vraag is dus of dit ook eenvoudig te maken is met actionscript zodat ik ik op dit punt misschien winst kan boeken in de grootte van de banner.

    Ik heb al hier en daar gegoogled maar niet het juiste antwoord gevonden.

    groetjes vW

    Bijdrager
    DoubleD

    gewoon een probeersel:) zijn tig manieren… mss kun je er iets mee

    num=0;
    function bijtellen() {
    if(num<5) {
    num = Number(num + 0.5);
    }
    else {
    num = 0;
    }
    }
    setInterval(bijtellen, 500);

    Bijdrager
    vanWoods

    bedankt maar waar koppel ik dit nu aan vast?!

    Bijdrager
    DoubleD

    Dat ligt eraan wat je er precies mee wilt doen.

    Als het niet meer is dat een getal in een tekstvak dan kun je, je tekstvak de naam “num” geven. In de eerste keyframe zet je dan deze code. Je zult dan zien dat er per 0,5 sec, 0,5 bij het getal wordt opgeteld.

    Als je niet wilt dat het getal weer opnieuw begint met tellen, haal je de “else” weg.

    num=0;
    function bijtellen() {
    if(num<5) {
    num = Number(num + 0.5);
    }
    }
    setInterval(bijtellen, 500);

    Het is maar een simpel voorbeeld, maar met zoiets kun je binnenin flash best een getal laten veranderen. Als je maar 1 keer wilt laten tellen van 0 tot 5 zou er wel een clearInterval moeten zijn, anders wordt de movie uiteindelijk traag (de Interval gaat door met tellen namelijk).

    num=0;
    function bijtellen() {
    if(num<5) {
    num = Number(num + 0.5);
    }
    else {
    clearInterval(bijtellen);
    }
    }
    setInterval(bijtellen, 500);

    Bijdrager
    vanWoods

    bedankt man nu snap ik het een beetje, het werkt nu in ieder geval.

    ik heb nu deze code gebruikt maar dan stopt hij bij 5.1 i.pv. 5.0

    [code:1:d31972d311]num=0;
    function bijtellen() {
    if(num<5) {
    num = Number(num + 0.1);
    }
    }
    setInterval(bijtellen, 50);[/code:1:d31972d311]

    kan ik hier nog iets aan veranderen?!

    thnx so far!!

    Bijdrager
    freshface

    Vergeet ook niet je interval te clearen om garbage collection tegen te gaan.

    Bijdrager
    DoubleD
    ”vanWoods”

    bedankt man nu snap ik het een beetje, het werkt nu in ieder geval.

    ik heb nu deze code gebruikt maar dan stopt hij bij 5.1 i.pv. 5.0

    [code:1:c2efa8feae]num=0;
    function bijtellen() {
    if(num<5) {
    num = Number(num + 0.1);
    }
    }
    setInterval(bijtellen, 50);[/code:1:c2efa8feae]

    kan ik hier nog iets aan veranderen?!

    thnx so far!!

    maak je er dit van:wink:

    [code:1:c2efa8feae]num=0;
    function bijtellen() {
    if(num<4.9) {
    num = Number(num + 0.1);
    }
    else {
    clearInterval(bijtellen);
    }
    }
    setInterval(bijtellen, 50);[/code:1:c2efa8feae]

    De Interval zelf is nu vrij snel, het zal per computer verschillen hoe snel hij telt.

    Have fun.

    Bijdrager
    vanWoods

    @Freshface

    Wat is garbage collection?!

    @DoubleD

    Als ik de clearInterval erin zet dan werkt er niks meer?! Als ik hem eruit haal dat doet hij het wel goed, ik snap dus ook niet precies waar deze goed voor is?!

    Hij loopt nu wel tot 5 maar niet tot 5.0 kan ik dit nog aanpassen in het script?!

    Bijdrager
    freshface

    Google it my man!

    Bijdrager
    vanWoods

    dat had ik al gedaan maar was er niet echt wijzer van geworden, bedoelen ze hiermee dat het object steeds weer opnieuw wordt benaderd zonder dat er eigenlijk nog maar iets mee gebeurd waardoor dit slecht is voor je geheugen?!

    sorry maar het is voor mij een beetje abracadabra.

    Bijdrager
    freshface

    Simpelweg dat flash je geheugen niet gaan volstoppen met waarden die niet meer nodig zijn.
    En hier is een betere versie:

    [code:1:ecb173ba83]var num = 0;
    var max = 5;
    var milliSeconds = 200;
    var increment = .5;

    function bijtellen() {
    if (num<=max-increment) {
    num += increment;
    trace(num);
    } else {
    clearInterval(intervalID);
    }
    }

    var intervalID = setInterval(bijtellen, milliSeconds);[/code:1:ecb173ba83]

    Bijdrager
    vanWoods

    Ok bedankt hiervoor!

    Kan je me misschien ook vertellen waarom dit beter is dan de vorige dan leer ik het misschien een beetje te begrijpen ipv van het zo over te nemen.

    Als ik de punt in een komma verander dan werkt het niet dit komt zeker omdat actionscript niet met komma’s werkt. Ik heb een stukje script gevonden waarmee het op te lossen zou kunnen zijn, het werkt alleen nog niet misschien stuur ik het niet goed aan?!

    [code:1:c28a106956]myTextField.text = myTextField.text.split(".").join(",");[/code:1:c28a106956]

    Bijdrager
    freshface

    Mijn script is eigenlijk nog niet 100% in orde met als reden dat er niet aan strict datatyping wordt gedaan. Je zegt niet wat voor soort variabele de variabele is.
    Het is beter op dat vlak dat nu de settings gescheiden zijn van de functie en het interval wordt gecleared.

    Bijdrager
    vanWoods

    Bedankt voor de uitleg!

    Ik ben inmiddels al een stuk verder!

    [code:1:9c6a4e0a79]var num:Number = 0;
    var max:Number = 5;
    var milliSeconds:Number = 100;
    var increment:Number = .1;
    var commaNumber:String;
    function bijtellen()
    {
    if (num <= max – increment)
    {
    num += increment;
    commaNumber = setComma(num);
    }
    else
    {
    clearInterval(intervalID);
    }
    }
    function setComma(no):String
    {
    cNo = no.toString();
    cArr = cNo.split(".");
    if (cArr[1] == undefined)
    {
    return cArr[0] + ",0";
    }
    else
    {
    return cArr[0] + "," + cArr[1];
    }
    }
    var intervalID = setInterval(bijtellen, milliSeconds);[/code:1:9c6a4e0a79]

    thnx!

    Bijdrager
    freshface

    Ik zag het op flashfocus.

15 berichten aan het bekijken - 1 tot 15 (van in totaal 15)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.