loadMovieNum _root question

Hi - I’m confused with loadMovieNum - I thought that if I loaded in a swf into a level in my maind movie using loadMovieNum, then the loaded movie would see the _root of the main timeline as its _root - but this doesn’t seem to be working - Or is this just with loadMovie, not loadMovieNum ?

Sam

_root will allways be the root…

actually that is not correct. The root will differ for externally loaded swfs based on where or what they are loaded into. The best way to access the _root level is either:

  1. Make a global variable or object that refferences the _root. and use this to call out to the _root.

Or

  1. Use _parent in your external swf to make reference to its parent container.

[url=http://www.top1wowgold.com/]

(From Flash help)

[SIZE=“6”]_lockroot (MovieClip._lockroot property)[/SIZE]

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 refers 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 the following code shows. 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;

[SIZE=“5”]Availability: ActionScript 1.0; Flash Player 7[/SIZE]

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*);

}

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 added to Frame 1 of the Timeline:

_root.myVar = 1;

_root.myOtherVar = 2;

trace(“from nolockroot.swf”);

for (i in _root) {

trace(" “+i+” -> "+_root*);

}

trace("");

The lockroot.swf file has _lockroot applied to it, and nolockroot.swf does not. After the files are loaded, each file outputs the values 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*);

}

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

you have to define a depth that is above everything else, also lock root is just plane silly

[quote=sparkdemon;2329512](From Flash help)

[SIZE=6]_lockroot (MovieClip._lockroot property)[/SIZE]

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 refers 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 the following code shows. 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;

[SIZE=5]Availability: ActionScript 1.0; Flash Player 7[/SIZE]

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*);

}

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 added to Frame 1 of the Timeline:

_root.myVar = 1;

_root.myOtherVar = 2;

trace(“from nolockroot.swf”);

for (i in _root) {

trace(" “+i+” -> "+_root*);

}

trace("");

The lockroot.swf file has _lockroot applied to it, and nolockroot.swf does not. After the files are loaded, each file outputs the values 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*);

}

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[/quote]

_lockroot sets the loaded swf to use its own timeline as the root. I do not think that is what he wants. I believe he wants the loaded swf to use the main timeline as its root.