Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash:每次访问帧时,关键帧中定义的函数是否重新加载到内存中?_Flash_Actionscript 3 - Fatal编程技术网

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

Flash:每次访问帧时,关键帧中定义的函数是否重新加载到内存中?,flash,actionscript-3,Flash,Actionscript 3,在Flash Actionscript 3中,如果在Flash动画的第1帧和动画循环中定义了一个函数,它是否会在每个循环的内存中存储该函数的另一个版本 第1帧: function blah() { var n = "yes"; return n; } if (!status) { function blah() { var n = "yes"; return n; } var status = "loaded"; } 如果是这样,最好的做法是通过设置变量

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

第1帧:

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

  var status = "loaded";
}
如果是这样,最好的做法是通过设置变量并检查其存在性来检查帧是否是第一次运行,还是因为编译器检查以确保函数尚未定义而不存在问题

第1帧:

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

  var status = "loaded";
}

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


希望这能有所帮助。

基本上是这样。Flash将把时间轴编译成一个类,完成时间轴上的所有函数。