WEB开发网
开发学院图形图像Flash MovieClip._lockroot 属性 阅读

MovieClip._lockroot 属性

 2012-06-02 19:59:48 来源:开发学院   
核心提示:_lockroot(MovieClip._lockroot 属性)public _lockroot : Boolean一个布尔值,指定将 SWF 文件加载到影片剪辑中时 _root 引用的内容,MovieClip._lockroot 属性,默认情况下,_lockroot 属性为 undefined,将以下 Action

_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

Tags:MovieClip lockroot 属性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接