Flash:每次访问帧时,是否在关键帧中定义的函数重新加载到内存中?

时间:2010-08-12 17:49:08

标签: flash actionscript-3

在Flash Actionscript 3中,如果在Flash动画的第1帧中定义了一个函数并且动画循环,它是否会在每个循环中将该函数的另一个版本存储在内存中。

第1帧:

function blah() {
  var n = "yes";
  return n;
}

如果是这样,最好通过设置变量并检查它是否存在来检查是否第一次运行该帧,或者是否为非问题,因为编译器会检查以确保一个功能尚未定义?

第1帧:

if (!status) {
  function blah() {
    var n = "yes";
    return n;
  }

  var status = "loaded";
}

1 个答案:

答案 0 :(得分:1)

Flash播放器很有可能为每个关键帧创建一个“包装器对象”,并且当您播放某个关键帧时,它只访问关键帧的“实例”。我很确定播放器不会在内存中存储该函数的新实例,它将是空间的腰部,事实上你可以调用第2帧中第一帧中声明的函数,例如,显示函数从框架可能是持久的。另外,如果您考虑到无法修改来自另一帧的帧中的代码的事实,则当时间轴重新进入该帧时,内容将是相同的。从我做过的一点测试来看,似乎玩家每次进入该帧时都只执行一个帧的代码,并且该帧上的所有代码都是当前时间轴的全局代码。我没有测试太多,所以我可能错了,但我很确定你可以删除状态变量,因为它不起作用,因为当帧脚本运行时状态var将被重置为false。

希望这有帮助。