User Guide

MovieClip._lockroot 593
For example, suppose you have a document called Games.fla that lets a user choose a game to
play, and loads the game (for example, Chess.swf) into the
game_mc movie clip. You want to make
sure that, if
_root is used in Chess.swf, it still refers to _root in Chess.swf after being loaded into
Games.swf. If you have access to Chess.fla and publish it to Flash Player 7 or later, you can add
this statement to Chess.fla on the main Timeline:
this._lockroot = true;
If you dont have access to Chess.fla (for example, if you are loading Chess.swf from someone
elses site into
chess_mc), you can set its _lockroot property when you load it, as shown below.
In this case, Chess.swf can be published for any version of Flash Player, as long as Games.swf is
published for Flash Player 7 or later. Place the following ActionScript on the main Timeline:
chess_mc._lockroot = true;
When calling loadMovie(), set the MovieClip._lockroot property to true in the loader
movie, as shown in the following code. If you dont set
_lockroot to true in the loader movie,
the loader has access only to its own library, but not the library in the loaded movie:
myMovieClip._lockroot = true;
Example
In the following example, lockroot.fla has _lockroot applied to the main SWF file. If it is loaded
into another FLA document,
_root will always refer to the scope of lockroot.swf, which helps
prevent conflicts. Place the following ActionScript on the main Timeline of lockroot.fla.
this._lockroot = true;
_root.myVar = 1;
_root.myOtherVar = 2;
trace("from lockroot.swf");
for (i in _root) {
trace(" "+i+" -> "+_root[i]);
}
trace("");
Which traces the following information:
from lockroot.swf
myOtherVar -> 2
myVar -> 1
_lockroot -> true
$version -> WIN 7,0,19,0
The following example loads two SWF files, lockroot.swf and nolockroot.swf. The lockroot.fla
document contains the previous ActionScript. The nolockroot FLA file has the following code
placed on Frame 1 of the Timeline:
_root.myVar = 1;
_root.myOtherVar = 2;
trace("from nolockroot.swf");
for (i in _root) {
trace(" "+i+" -> "+_root[i]);
}
trace("");