大众计算机学习网

专门提供各种电脑教程

MovieClip._lockroot 属性

Admin | 2012-1-14 5:32:07 | 被阅次数 | 3895

  _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