Winter 02 | AS 3.0 Array's

Leerdoelen

Deze les

Arrays


//lege array aanmaken
var Array:Array = new Array();

//Array aanmaken die al meteen gevuld is met strings
var Array:Array = new Array("a", "b", "c");

Waneer je een array wilt aanvullen met een nieuwe waarde, kan je ook door aan te geven op welke plek het getal moet komen dit wijzigen. Zie voorbeeld:

var items:Array = new Array();
items[4] = "appels";
// een array testen kan gewoon met trace
trace(items[4]);

Wanneer je waardes aan een array toe wilt voegen, kan dit met Push

var items:Array = new Array();
items.push("peer","banaan");

Wanneer je de lengte van een array wilt opvragen kan dit door .length te gebruiken, netzoals in javascript

trace (items.length);

Je zou de ook een nieuwe waarde kunnen toevoegen door de length van een array op te vragen en dan te zeggen dat op die plek er een nieuwe waarde moet worden toegeveogd. Het is zo dat een array zoals je weet altijd bij 0 begint met tellen. De lengte van de array is dus gelijk ook de eerst volgende nieuwe lege plek aan het einde van de array

items[items.length] = "sinaasappel";

Daarnaast bestaat er ook de multidimensionale array. Ook hiervan een voorbeeld ter herhaling

var autos:Array = new Array();
autos.push([rood, 1995, "fiat"]);
autos.push([geel, 2006, "porche"]);
autos.push([beige, 2002, "audi"]);

// waneer je deze gegevens weer wilt uitlezen, kan dit met dubbele vierkante haken. 
// Hier wordt uit de eerste serie gegevens, de tweede waarde gevraagd. 
trace (autos[0][1]); 
// dit geeft de waarde 1995 terug. Namelijk uit het eerste rijtje, de tweede waarde.

Dit is de basis met betrekking tot array's. Er bestaan verder allerlei fu

Loops

Wanneer je met arrays aan de slag gaat, ben je al snel ook bezig met loops. Ook hier is een sterke overeenkomst met javascript.

var letters:Array = ["a", "b", "c"];
for (vari:int = 0; i<letters.length; i++;){
	trace(letters[i]);
}

Opvallend anders is aan deze loop dat hierbinnnen de loop dus ook de variabele i, met strong typing wordt gedefinieerd. i is een integer, en dit wordt meteen verbeeld binnen de condities voor de loop. Verder werkt de loop op dezelfde wijze als normaal. Met trace kun je in het output window van flash testen wat de output is van de for-loop.

Stel je wilt een match vinden in een array. Je hebt een array met seizoenen. De herfst is geselecteerd door de gebruiker en je wilt controleren of het seizoen herfst ook gevonden wordt in de array.

var seizoenen:Array = ["herfst","winter","lente","zomer"];
var match:String = "herfst";
for (vari:int = 0; i<seizoenen.length; i++;){
	if (seizoenen[i] == match){
    	trace ("element met index " + i + " matched met seizoen " + match);
    	break;
    }
} 

Je ziet dat de code vergelijkbaar is met javascript. Nieuw is break. Dit betekent dat zodra de match is gevonden de loop wordt afgebroken.

Aan het einde onder kopje arrays heb ik een voorbeeld gegeven met auto's. Dit voorbeeld zou ook verder kunnen worden uitgewerkt met behulp van een loop. Hiermee kan je alle waardes tonen op het scherm

for (vari:int = 0; i<autos.length; i++;){
	trace ("een" + autos[0][0] + "uit" + autos[0][1] + "van het merk" + autos[0][2]);
}

Naast de for-loop is daar ook een variant waarbij je direct de waardes in een array kunt opvragen.

var myArray:Array = ["een", "twee", "drie"];
for (var i:String in myArray){
    trace(myArray[i]);
}

// output:
// een
// twee
// drie

Naast de for-loop is er ook nog de for.. each variant

var myArray:Array = ["een", "twee", "drie"];
for each (var item in myArray){
    trace(item);
}

// output:
// een
// twee
// drie

links

Deze herhaling van scriptbasics zijn goed uitgewerkt ook in de help van flash. Hieronder een link naar de help pagina's online, zodat je hier nog verder kan kijken.

livedocs overzicht pagina
llivedocs over loops

Auteur: Roos Groenewegen
Seizoen: Winter
Lesnummer: 02
Datum: 29-11-2007
Type les: MME