Toon posts:

[actionscript] vreemd..

Pagina: 1
Acties:

Verwijderd

Topicstarter
OK, ik loop tegen iets heel vreemds aan in flash. Op de één of andere manier wil hij niks in een array stoppen die in een functie zit, terwijl hij hetzelfde wel wil als ik de code niet in een functie heb.
Ik heb even de oorspronkelijke code wat verder vereenvoudigd om het probleem te ontsluiten, kijk er even naar. (en huiver :))

Werkt NIET, de returnArray wordt niet gevuld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
eenArray = new Array(100, 200, 300);
trace( eenFunctie(eenArray));

function eenFunctie(array){
    returnArray = new Array();
    teller = 0;

    while(true){
        if(teller < array.length){  
            returnArray.push(array[teller]);
            teller++;
        }else{
            break;
        }
    }
    return returnArray; 
}


werkt WEL:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
array = new Array(100, 200, 300);

returnArray = new Array();
teller = 0;

while(true){
    if(teller < array.length){  
        returnArray.push(array[teller]);
        teller++;
    }else{
        break;
    }
}
trace( returnArray);


Ik (en medestudenten) snappen er niks meer van, weet iemand hoe dit kan (en hoe we dit oplossen)? Heel erg bedankt

Verwijderd

Deze stukken code:

Flash ActionScript:
1
array = new Array(100, 200, 300); // Gebruikt intern al gebruikt keyword; array

Flash ActionScript:
1
returnArray.push(array[teller]); //Same as above


Erg brakke code; dit is echt onhandig:

code:
1
2
3
4
5
6
while(true){
    if(teller < array.length){.........

}else{
        break;
    }

dusss.....
Even wat werkende en nette code:

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
mijnArray = new Array(100, 200, 300);

function doeIets(arr){
    var ln = arr.length;
    for(n=0; n<ln; n++){
        trace(arr[n]);  
    }
}

doeIets(mijnArray);

Verwijderd

Topicstarter
Hmm, bedankt voor je reactie, maar das nog geen oplossing voor m'n probleem.

Die while loop zit er overigens niet voor niks, ik wil in m'n uiteindelijke script nl niet de hele array door (kost te veel tijd), maar dit al snel weer afbreken (break). Doordat ik de code iets vereenvoudigd heb, is dat er nu niet meer uit te halen, om dezelfde reden is overigens ook de naamgeving wat anders geworden.
Dat afbreken met 'break' kan, bedenk ik me net, eigenlijk ook wel in een for loop (zoals in jouw code), maar zelfs in de actionscript dictionary gebruiken ze while(true)... dus zo brak is dat toch niet?

toch bedankt

Verwijderd

ik heb nog ff voor je gekeken:

Het probleem zat hem in je break :
een return is inprincipe een break, maar dan met waarde terug gifte....jij breakt voordat hij kan returnen.....

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function doeIets(arr){
    var ln = arr.length;
    var tempArr = new Array();
    for(n=0; n<ln; n++){
        var curVal = arr[n];
        if(curVal != 0){
            trace('deze waarde is niet 0 en ik stop hem in een array');
            temparr.push(curVal);
        }else{
            trace('ik heb nu een reden om te stoppen');
            return tempArr;
        }
    }
}

mijnArray = new Array(100, 200, 300, 0, 20, 30);
nieuwArray = doeIets(mijnArray);
trace('ik ben nu gestopt en heb een nieuw array: '+nieuwArray);


Ik hoop dat je iets meer kan met dit.....ik heb je 'hij moet ergens stoppen' ding er ingehangen in de vorm van 'als ik een 0 vind kap ik ermee' gebeuren...stop hier je eigen if.....

[ Voor 10% gewijzigd door Verwijderd op 16-01-2003 23:05 ]


Verwijderd

Topicstarter
hee, cool, het werkt. Bedankt joh.
Dus.. die break is niet meer nodig, want dat doet die return al. Ik wist niet dat een break ook meteen de hele functie stopt, ipv alleen de loop

Verwijderd

't is net als bij kleine kinderen, als ze wat breken breken ze alles.

Verwijderd

Verwijderd schreef op 16 januari 2003 @ 23:12:
hee, cool, het werkt. Bedankt joh.
Dus.. die break is niet meer nodig, want dat doet die return al. Ik wist niet dat een break ook meteen de hele functie stopt, ipv alleen de loop
show us the swf when your done :)

Verwijderd

Topicstarter
Dat duurt nog een paar weken voor ie klaar is :) Tis een aardig project
Pagina: 1