(continues from page 1)
CREATING MORE COMPLEX ARRAYS As we said before arrays not only can store primitive values but they can contain other objects and arrays.
Look at this example:
myData = new Array()
//--- Create a new Object --------------------
myObject = new Object()
myObject.myName = "Marco"
myObject.myLocation = "Italy"
myObject.myAge = 30
//--------------------------------------------
myData[0] = myObject
myData[1] = { x: 200, y: 400 }
myData[2] = 100.99
myData[3] = new Array("flash","director","dreamweaver")
myData[4] = "Last item of this complex array"
There's a lot of stuff going on in this example:
in the first line a new, empty array is created. Then a new object is created with three properties.
Moving on the next lines you will notice that the first five items of the array are filled:
item at 0: is the object we previously constructed
item at 1: use a literal expression to create a new Object with 2 properties, x and y
item at 2: a float value
item at 3: contains a new Array containing 3 strings
item at 4: a string
At this point you can retrieve the array elements like this:
trace(myData[0].myLocation) // will output >> italy
trace(myData[1].y) // will output >> 4
trace(myData[2]) // will output >> 100.99
trace(myData[3][1]) // will output >> director
trace(myData[4]) // will output >> Last item of this complex array
You can download the source code of this example.
So far you learned that arrays in actionscript can contain different elements like primitive types and complex types as well like other
arryas and objects. Now I want to show you a more game-oriented code snippet that could be used to create an enemy data structure.
In our DickDynamite we have a variable number of enemies in every level and each of them has his own properties: position, speed, status (dead or alive) etc...
To store this information we could create an empty object with the properties that we need:
// Create the objects for each enemy
enemy0 = new Object();
enemy1 = new Object();
enemy2 = new Object();
// Setup enemy properties
enemy0.posx = 10;
enemy0.posy = 10;
enemy0.speed = 12;
enemy0.active = true;
enemy1.posx = 1;
enemy1.posy = 5;
enemy1.speed = 7;
enemy1.active = false;
enemy2.posx = 6;
enemy2.posy = 7;
enemy2.speed = 18;
enemy2.active = true;
// Add objects to an empty array
enemies = new Array()
enemies[0] = enemy0;
enemies[1] = enemy1;
enemies[2] = enemy2;
// Cycle through the array
for (i=0; i < enemies.length; i++)
{
if (enemies[i].active) // do something with it
}
Here we setup 3 objects with their properties and then we populate an "enemies" array so that it makes it easier to cycle through all enemies in the game. We have created our first basic datastructure for a game.
(continues on page 3) |