• Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint
Share this Page URL
Help

Chapter 4. Data and Data Types > Organizing data in objects

Organizing data in objects

You might already be used to objects that you place on the Stage. For example, you might have a MovieClip object on the Stage, and this object contains other movie clips inside it. Text fields, movie clips, and buttons are often called objects when you place them on the Stage.

Objects, in ActionScript, are collections of properties and methods. Each object has its own name, and it is an instance of a particular class. Built-in objects are from classes that are predefined in ActionScript. For example, the built-in Date class provides information from the system clock on the user’s computer. You can use the built-in LoadVars class to load variables into your SWF file.

You can also create objects and classes using ActionScript. You might create an object to hold a collection of data, such as a person’s name, address. and telephone number. You might create an object to hold color information for an image. Organizing data in objects can help keep your Flash documents more organized. For general information on creating a custom class to hold a collection of methods and properties, see “Writing custom class files” on page 241. For detailed information on both built-in and custom classes, see Chapter 7, “Classes,” on page 231.

There are several ways to create an object in ActionScript. The next example creates simple objects in two different ways, and then loops over the contents of those objects.

To create simple objects in Flash:

1.
Create a new Flash document, and save it as simpleObjects.fla.

2.
Select Frame 1 of the Timeline, and type the following ActionScript into the Actions panel:

// The first way
var firstObj:Object = new Object();
firstObj.firstVar = "hello world";
firstObj.secondVar = 28;
firstObj.thirdVar = new Date(1980, 0, 1); // January 1, 1980

This code, which is one way to create a simple object, creates a new object instance and defines a few properties within the object.

3.
Now enter the following ActionScript after the code you entered in step 2.

// The second way
var secondObj:Object = {firstVar:"hello world", secondVar:28,
  thirdVar:new Date(1980, 0, 1)};

This is another way of creating an object. Both objects are equivalent. This code above creates a new object and initializes some properties using the object shorthand notation.

4.
To loop over each of the previous objects and display the contents of objects, add the following ActionScript on Frame 1 of the Timeline (after the code you’ve already entered):

var i:String;
for (i in firstObj) {
  trace(i + ": " + firstObj[i]);
}

5.
Select Control > Test Movie, and the following text appears in the Output panel:

firstVar: hello world
secondVar: 28
thirdVar: Tue Jan 1 00:00:00 GMT-0800 1980

You can also use arrays to create objects. Instead of having a series of variables such as firstname1, firstname2, and firstname3 to represent a collection of variables, you can make an array of objects to represent the same data. This technique is demonstrated next.

To use an array to create an object:

1.
Create a new Flash document, and save it as arrayObject.fla.

2.
Select Frame 1 of the Timeline, and type the following ActionScript into the Actions panel:

var usersArr:Array = new Array();
usersArr.push({firstname:"George"});
usersArr.push({firstname:"John"});
usersArr.push({firstname:"Thomas"});

The benefit of organizing variables into arrays and objects is that it becomes much easier to loop over the variables and see the values, as shown in the following step.

3.
Type the following code after the ActionScript you added in step 2.

var i:Number;
for (i = 0; i < usersArr.length; i++) {
  trace(usersArr[i].firstname); // George, John, Thomas
}

4.
Select Control > Test Movie, and the following text appears in the Output panel:

George
John
Thomas

The following example presents another way to loop over objects. In this example, an object is created and looped over using a for..in loop, and each property appears in the Output panel:

var myObj:Object = {var1:"One", var2:"Two", var3:18, var4:1987};
var i:String;
for (i in myObj) {
  trace(i + ": " + myObj[i]);
}
//outputs the following:
/*
    var1: One
    var2: Two
    var3: 18
    var4: 1987
*/

For information on creating for loops, see Chapter 5, “Using for loops,” on page 161. For information on for..in loops, see “Using for..in loops” on page 162. For more information on objects, see Chapter 7, “Classes,” on page 231.

  • Creative Edge
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint