预加载器如何在as3中工作?

时间:2009-10-05 09:36:52

标签: flash actionscript-3

我已经阅读了多个这方面的例子,但我不知道它是如何工作的。

  • 班级如何知道 预加载器?
  • flash如何知道加载一个类而不是另一个类?
  • 预加载器可以做多少? :-P

我正在使用FlashDevelop atm,它正在为我生成项目 - 但是,从我检查的所有示例中,他们都没有解释它是如何工作的。

2 个答案:

答案 0 :(得分:2)

您熟悉Flash时间表吗?

默认情况下,您的SWF会有一帧。此框架包含您的Preloader.as类。 在编译时,FD会创建第二个框架,其中包含您的Main类 - 您希望在整个SWF下载后运行的类。 Preloader.as包含等待所有帧完全下载的代码,然后实例化Main类。

来自http://www.flashdevelop.org/community/viewtopic.php?f=9&t=5398的更多详情:

  

当您创建“带预加载器的AS3项目”时,FD会配置您应该控制的一些重要事项:

     
      Preloader.as中的
  1. ,   有一个解决你的主类的电话:   getDefinitionByName(“{qualified main class name}”)

  2.   项目属性中的
  3. ,   编译器选项>其他编译器参数[...]   应该有:   -frame start {qualified main class name}

  4.   

Flash知道首先运行Preloader.as,因为FD将它放在第一帧中,而FD执行此操作是因为Preloader类已设置为“Always Compile”(您可以选择通过右键单击一个来自行设置此选项)上课并选择“始终编译”。)

您可以在预加载器中执行任何操作,但在下载预加载器所需的所有内容之前,它不会运行任何代码。因此,如果您使用3MB图像文件和进度条制作预加载器,则在整个图像下载之前,进度条将不会执行任何操作!

答案 1 :(得分:1)

在AS3中,我只使用外部预加载器(它们是SWF),然后加载到我的主SWF中。我确保预加载器swf很小,因为你无法真正预加载预加载器。有一个名为Loader的类,用于加载SWF并获取有关它的信息(大小等)。您可以收听事件以接收此信息,然后使用它来呈现进度条等。

因此,预加载器并不是任何只想要另一个类来完成工作的东西,所以你通过传递一个URL字符串来表示要加载的swf。

再次预加载器是一个类,您可以在其中执行任何操作但最好保持SWF文件大小。

要获得一个非常棒的教程,请查看http://www.gotoandlearn.com/play?id=85。 Lee还有一个链接到要下载的文件。