On the use of frames and functions in Flash AS3



我的问题是,在flash游戏中,我使用不同的框架来进行关卡。我对函数是如何工作的感到困惑。我的第一个框架运行良好,但我需要帮助在其他框架上使用函数,并保持特定于一个框架的函数。感谢您的任何帮助,只需简单快速的解释即可。

不能将函数与特定的框架相关联。

当您在一个框架上执行代码时,实际发生的情况是包含该框架的MovieClip将调用一个名为addFrameScript()的函数,并将您在该框架上编写的代码的表示形式传递给它。

这意味着:

  • 在访问定义函数的框架之前,不能调用所述函数
  • 一旦您访问了定义函数的框架,该函数就会附加到父MovieClip,并且您可以在时间线上较早或较晚的任何点调用该函数
  • 如果您试图在不同的框架上定义一个具有相同名称的新函数,则会出现1021: Duplicate function definition错误

与其为每个帧或级别创建一个新函数,不如创建一个能够处理代表某个级别的不同信息的函数,例如

function loadLevel(level:int):void
{
    // Do stuff with the value of level.
    // For example, this function might look at a data source that maps
    // the level numbers to some level data representing tile placement.
}

这可以在第一帧上定义,然后在每个后续帧上定义:

loadLevel(1); // Frame 2
loadLevel(2); // Frame 3
// ...etc

当然,所有这些都不是理想的,可以更好地避免时间线,而是使用AS3提供的面向对象的范例。

我发现在同一场景中使用多个级别会让我头疼不已。我不是专家;我相信在很多情况下这样做是可能的,我已经看到一些伟大的游戏使用1帧1场景&外部.as.中的所有代码

然而,我发现自己更容易只使用每一个级别1帧,并将每个级别放在不同的场景中。

最新更新