ActionScript.org Flash, Flex and ActionScript Resources - http://www.actionscript.org/resources
Arrays in ActionScript
http://www.actionscript.org/resources/articles/89/1/Arrays-in-ActionScript/Page1.html
Guy Watson
This user is yet to take control of their account and provide a biography. If you are the author of this article, please contact us via support AT actionscript DOT org. 
By Guy Watson
Published on September 9, 2005
 
Tutorial details:
Written by: Guy Watson aka. FlashGuru
Difficulty Level: Intermediate
Requirements: Flash 5 and above.

Creating ActionScript arrays
Tutorial details:
Written by: Guy Watson aka. FlashGuru
Difficulty Level: Intermediate
Requirements: Flash 5 and above.

If you are interested in arrays then i assume you already know about variables. Variables are a container for one piece of data, this piece of data can be a number, a string or a boolean value.  See the associated tutorial.

Arrays are similar to variables as they too are containers for data, except that they can hold more than one piece of data, each element(piece of data) is referred to by an index.

Arrays can be used to keep your scripts more organised, they are usually used to group together multiple values that are in some way related to each other, the values use an index to distinguish them from each other. Suppose you wanted to write out 3 quotes for use in your movie and use variables for each quote, you could define 3 variables as follows:

[as]quote1 = "Flash is cool!";
quote2 = "Flash is my favourite program";
quote3 = "Flash rules";[/as]

However a better way may be to use an array, there are numerous ways of creating an array but i will show you the easiest way first:

[as]name_of_array = new Array();[/as]

So to store our quotes in an array we could use:

[as]quotes = new Array();[/as]

Ok thats great we now have an array, but the problem is we dont have any data inside of our array, thats not very useful so we will now place data inside of our array, we do this by using an index number, the index number refers to the position in the array.

To place a piece of data inside the first element of our array we would use:

[as]quotes[0] = "Flash is cool!";[/as]

As i mentioned before, arrays in flash 5 are zero based, meaning that the first element in the array has an index of zero(0).

So to place a piece of data inside the second element of our array we would use:

[as]quotes[1] = "Flash is my favourite program";[/as]

We use this syntax to fill an element of an array with a piece of data:

[as]name_of_array[index] = value;[/as]

where name_of_array is the name of your array, the index is the position in your array and the value is the piece of data you want to add to your array.

So the code we created earlier using variables:

[as]quote1 = "Flash is cool!";
quote2 = "Flash is my favourite program";
quote3 = "Flash rules";[/as]

can also be written as follows using arrays:

[as]quotes=new Array();
quotes[0] = "Flash is cool!";
quotes[1] = "Flash is my favourite program";
quotes[2] = "Flash rules";[/as]

Thats all great, but that is still alot of typing, we can also create an array of values using this syntax:

[as]name_of_array = new Array("value1","value2","value3");[/as]

So basically the same as the code we wrote earlier, but in one long line of code, value1 will be the first element of your array, value2 the second element of your array and so on....


Working with Arrays
We could use the following code to create our array of quotes:

[as]quotes = new Array("Flash is cool!","Flash is my favourite program","Flash rules");[/as]

Thats brilliant we now know how to create arrays and what they can be used for, but there is one more way of creating arrays that i want to make you aware of, the syntax is as follows:

[as]name_of_array = ["value1","value2","value3"];[/as]

Again similar to the previous syntax except that we didnt have to use the array object initilaizer(new Array())

So again we could create our array of quotes using the following code:

[as]quotes = ["Flash is cool!","Flash is my favourite program","Flash rules"];[/as]

The way you create arrays is entirely up to you but i prefer using the last synatx i showed you as it requires less typing.

Now we know how to create arrays, but you will at some point have to access the values of your array for use in your scripts. Well fortuneatley there is only one way of doing this and the synatx is as follows:

[as]mynewvariable = name_of_array[index];[/as]

So lets say we want to get the value of the first element in our quotes array and place it in a new variable, we would use:

[as]firstquote = quotes[0];[/as]

the new variable would be called firstquote and its value would be Flash is cool!

Implementation of arrays in a script:

Ok so imagine we want to print out all of the quotes from our array, but we dont know how many quotes we have placed in the array, luckily for us flash has many built in properties and methods for use with the array object, one of which is the property which tells us how many elements we have in our array.

To find out how many elements you have in your array we can use:

[as]myarraylength = name_of_array.length;[/as]

the above code will create a new variable called myarraylength and its value will be the number of elements in the array you specify(name_of_array).

In the case of our quotes array, we could use the following code to tell us how many elements are in the array:

[as]trace (quotes.length);[/as]

The output window should display three(3) if you have used the code i have given you previously.

The length of the array is equal to the highest index in your array plus one. The highest index in our quotes array is two(2) therefore we have three elements in our array. Remember arrays in flash 5 are zero based.

Now we know how to use the length property of the array object, we can now print out all the values in our array, the script would be as follows:

[as]for(z=0; z<name_of_array.length; ++z){
        trace(name_of_array[z])
}[/as]

So lets go through that code step by step.

We firstly create a temporary variable called i:

[as]z = 0;[/as]

We then say loop the following code while the value of the variable i is less than the length of our array:

[as]z<name_of_array.length;[/as]

And then we say add one to the value of our variable i:

[as]++z[/as]

So lets put this script into use, by printing out all the value of our quotes array:

[as]for(z=0;z<quotes.length;++z){
        trace(quotes[z])
}[/as]

The above code:

[as]trace(quotes[z]);[/as]

will loop three times, this is due to the fact that the length of our quotes array is three(3), each time the code loops it will print out the value of the current element:

[as]quotes[z][/as]

This is because we increment(add one) to the value of z each time the script loops.

So we should now know how to use arrays, how to create arrays and how to get values from arrays.

There is another type of arrays which i would like to tell you how to use, there isnt much too it but its nice to know about, so here goes:

Associative arrays:

Associative arrays give you another way to store information. Using associative arrays, you can call the array element you need using a string rather than a number, which is often easier to remember. The downside is that these aren't as useful in a loop because they do not use numbers as the index value.

An associative array is defined in the same way as a normal array except you use a string instead of an index.

So for example we want to use store a list of cars, rather than using:

[as]mycars=new Array();
mycars[0] = "peugoet 306";
mycars[1] = "citreon saxo";
mycars[2] = "ford fiesta";[/as]

We could use:

[as]mycars = new Array();
mycars["fast"] = "peugoet 306";
mycars["sporty"] = "citreon saxo";
mycars["old"] = "ford fiesta";[/as]

This can be very useful sometimes but is not as useful as a regular array when trying to loop through each value with a for loop as this type of array isnt pased upon index numbers.

To access a value in this type of array you again use the index, but this time the index is a string, say for example we wanted to retrieve the value of sporty, we would use:

[as]mysportycar = mycars["sporty"];[/as]

That will create a variable called mysportycar and its value will be citreon saxo.

My next tutorial will be about the methods and properties of the array object, following that there is another type of array "the associative array" which i will try to explain and there are also "muti-dimensional arrays".

keep your eyes peeled!

Hope that helps somebody, any questions should be reffered to either the message boards on this site, or to [email:guy@flashguru.co.uk]