O'Reilly logo

Actionscript Cookbook by Joey Lott

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

7.10. Discovering Nested Movie Clips

Problem

You want to use ActionScript to retrieve an array of movie clip instances nested within a specific movie clip.

Solution

Use a for . . . in statement to loop through all the contents of the movie clip, and if the content is an instance of the MovieClip class (as indicated by the instanceof operator), add it to an array of the nested movie clips.

Discussion

Movie clips can be nested within other movie clips. A nested clip instance is stored as a property of its parent clip. Since movie clip instances are objects, you can access all the nested movie clips using a for . . . in statement. However, a basic for . . . in statement lists other properties in addition to nested movie clips. This example displays not only movie clips nested in _root, but also any timeline variables, functions, and the built-in $version variable:

for (var item in _root) {
  trace(item + ": " + _root[item]);
}

To separate nested movie clips from the rest of a clip’s contents, you can use the instanceof operator to check if an item is an instance of the MovieClip class, as follows:

// The if statement disregards everything but movie clips.
for (var item in _root) {
  if (_root[item] instanceof MovieClip) {
    trace(item + ": " + _root[item]);
  }
}

You can also write a simple custom method for the MovieClip class that returns an array of nested movie clips:

MovieClip.prototype.getMovieClips = function ( ) { // Define the array to contain the movie clip references. var mcs = new Array( ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required