_root versus root

You may have heard you should avoid using the global _root variable in prior versions of ActionScript. That’s because the value of the variable was subject to change. Before ActionScript 3.0, the _root variable referred to the timeline of the original host SWF no
matter how many SWFs got loaded.

_root was the equivalent of an absolute address, like referring to an image in a web site as http://www.yourdomain.com/image, or a file on your computer as C:\directory\file, instead of a more flexible relative address such as “image” (or “../image,” for example, if you needed to traverse directories first).

Because _root was an absolute address, if the file in which you used the global variable was loaded into another file, the variable was redefined to become the timeline doing the loading, rather than your original file. This was often not initially intended and would break many object path references that originated with _root.

In ActionScript 3.0, the display list changed that prevailing logic. root is now an instance variable of the display object, and doesn’t always refer to the main timeline. It’s relevant to the context in which it’s used so it behaves more like a relative address and no longer changes just because your SWF is loaded into another SWF. The root of a movie clip in SWF A, is the same if it stands alone or is loaded into SWF B. The same goes for the root in SWF B, whether it stands alone or is loaded into SWF C, and so on.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s