_lockroot(MovieClip._lockroot 属性)
public _lockroot : Boolean 一个布尔值,指定将 SWF 文件加载到影片剪辑中时 _root 引用的内容。默认情况下,_lockroot 属性为 undefined。您可以在正在被加载的 SWF 文件中或正在加载该影片剪辑的处理函数中设置此属性。
例如,假设您有一个名为 Games.fla 的文档,用于让用户选择要玩的游戏并将该游戏(例如 Chess.swf)加载到 game_mc 影片剪辑中。请确保,在加载到 Games.swf 中之后,在 Chess.swf 中对 _root 的任何使用都指向 Chess.swf 中的 _root(而非 Games.swf 中的 _root)。如果对 Chess.fla 具有访问权限并将其发布到 Flash Player 7 或更高版本,则可以将此语句添加到 Chess.fla 的主时间轴上:
this._lockroot = true;
如果您无法访问 Chess.fla(例如,如果您从其他人的站点中将 Chess.swf 加载到 chess_mc),则可以在加载时设置 Chess.swf _lockroot 属性。将下列 ActionScript 放在 Games.fla 的主时间轴上:
chess_mc._lockroot = true;
在这种情况下,只要发布了 Flash Player 7 或更高版本的 Games.swf,就可以发布任何 Flash Player 版本的 Chess.swf。
在调用 loadMovie() 时,可按下列代码所示在加载器影片中将 MovieClip._lockroot 属性设置为 true。如果您不在加载器影片中将 _lockroot 设置为 true,则任何对已加载影片中 _root 的引用都会指向加载器的 _root,而不是已加载影片的 _root:
myMovieClip._lockroot = true;
可用性:ActionScript 1.0;Flash Player 7
示例
在下面的示例中,lockroot.fla 将 _lockroot 应用于主 SWF 文件。如果 SWF 文件被加载到另一 FLA 文档中,则 _root 始终指的是 lockroot.swf 的范围,这有助于防止冲突。将以下 ActionScript 放在 lockroot.fla 的主时间轴上:
this._lockroot = true;
_root.myVar = 1;
_root.myOtherVar = 2;
trace("from lockroot.swf");
for (i in _root) {
trace(" "+i+" -> "+_root[i]);
}
trace("");
它跟踪以下信息:
from lockroot.swf
myOtherVar -> 2
myVar -> 1
_lockroot -> true
$version -> WIN 7,0,19,0
下面的示例加载两个 SWF 文件,即 lockroot.swf 和 nolockroot.swf。lockroot.fla 文档包含前面示例中的 ActionScript。nolockroot.fla 文件中,下列代码被添加到时间轴的第 1 帧:
_root.myVar = 1;
_root.myOtherVar = 2;
trace("from nolockroot.swf");
for (i in _root) {
trace(" "+i+" -> "+_root[i]);
}
trace("");
lockroot.swf 文件已应用了 _lockroot,而 nolockroot.swf 则未应用。文件被加载后,每个文件将从它们的 _root 范围中输出值变量。将以下 ActionScript 放在 FLA 文档的主时间轴上:
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();
它跟踪以下信息:
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
未应用任何 _lockroot 的文件也包含根 SWF 文件所包含的所有其它变量。如果您无权访问 nolockroot.fla,则可以使用以下添加到主时间轴的 ActionScript 更改前面的主 FLA 文档中的 _lockroot:
this.createEmptyMovieClip("nolockroot_mc", this.getNextHighestDepth());
nolockroot_mc._lockroot = true;
nolockroot_mc.loadMovie("nolockroot.swf");
然后,它将跟踪以下内容:
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