_lockroot (MovieClip._lockroot property)

public _lockroot : Boolean

A Boolean value that specifies what _root refers to when a SWF file is loaded into a movie clip. The _lockroot property is undefined by default. You can set this property within the SWF file that is being loaded or in the handler that is loading the movie clip.

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. Make sure that, after being loaded into Games.swf, any use of _root in Chess.swf will refer to _root in Chess.swf (not _root in 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 don't have access to Chess.fla (for example, if you are loading Chess.swf from someone else's site into chess_mc), you can set the Chess.swf _lockroot property when you load it. Place the following ActionScript on the main Timeline of Games.fla:

chess_mc._lockroot = true;

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.

When calling loadMovie(), set the MovieClip._lockroot property to true in the loader movie, as shown in the following code. If you don't set _lockroot to true in the loader movie, any references to _root in the loaded movie point to the _root of the loader instead of the _root of the loaded movie:

myMovieClip._lockroot = true;

Availability

Flash Lite 2.0

Example

In the following example, lockroot.fla has _lockroot applied to the main SWF file. If the SWF file is loaded into another FLA document, _root always refers 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 ActionScript from the preceding example. 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("");

The lockroot.swf file has _lockroot applied to it, and nolockroot.swf does not. After the files are loaded, each file dumps variables from their _root scopes. Place the following ActionScript on the main Timeline of a FLA document:

this.createEmptyMovieClip("lockroot_mc", this.getNextHighestDepth()); 
lockroot_mc.loadMovie("lockroot.swf"); 
this.createEmptyMovieClip("nolockroot_mc", this.getNextHighestDepth()); 
nolockroot_mc.loadMovie("nolockroot.swf"); 
function dumpRoot() { 
    trace("from current SWF file"); 
    for (i in _root) { 
    trace(" "+i+" -> "+_root[i]); 
    } 
    trace(""); 
} 
dumpRoot();

which traces the following information:

from current SWF file 
dumpRoot -> [type Function] 
$version -> WIN 7,0,19,0 
nolockroot_mc -> _level0.nolockroot_mc 
lockroot_mc -> _level0.lockroot_mc 
 
from nolockroot.swf 
myVar -> 1 
i -> lockroot_mc 
dumpRoot -> [type Function] 
$version -> WIN 7,0,19,0 
nolockroot_mc -> _level0.nolockroot_mc 
lockroot_mc -> _level0.lockroot_mc 
 
from lockroot.swf 
myOtherVar -> 2 
myVar -> 1

The file with no _lockroot applied also contains all of the other variables that the root SWF file contains. If you don't have access to the nolockroot.fla, you can use the following ActionScript added to the main Timeline to change the _lockroot in the preceding main FLA document:

this.createEmptyMovieClip("nolockroot_mc", this.getNextHighestDepth()); 
nolockroot_mc._lockroot = true; 
nolockroot_mc.loadMovie("nolockroot.swf");

which then traces the following:

from current SWF file 
dumpRoot -> [type Function] 
$version -> WIN 7,0,19,0 
nolockroot_mc -> _level0.nolockroot_mc 
lockroot_mc -> _level0.lockroot_mc 
 
from nolockroot.swf 
myOtherVar -> 2 
myVar -> 1 
 
from lockroot.swf 
myOtherVar -> 2 
myVar -> 1