2009-10-05 54 views
1

我已经阅读了关于这个的多个例子,但我只是不明白它是如何工作的。预加载器如何在as3中工作?

  • 该班级如何知道它是THE预加载器?
  • Flash如何知道加载一个类而不是另一个类?
  • 我可以在预加载程序中执行多少操作? :-p

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

回答

2

您是否熟悉Flash时间表?

默认情况下,您的SWF将有一个框架。该框架包含您的Preloader.as类。 在编译时,FD会创建第二个框架,其中包含您的Main类 - 您想在整个SWF下载后运行的类。 Preloader.as包含等待所有框架已完全下载的代码,然后实例化Main类。从http://www.flashdevelop.org/community/viewtopic.php?f=9&t=5398

更多细节:

当你创建一个 “与预加载AS3项目”,FD配置一些重要的事情,你应该控制:

  1. 在Preloader.as, 有是解决您的主要类的电话: getDefinitionByName(“{qualified main class name}”)

  2. in Project propert IES, 编译器选项>其他编译器参数[...] 应该有: -frame启动{合格的主要类名}

闪存知道先运行Preloader.as因为FD把它在第一帧中,FD执行此操作是因为Preloader类已被设置为“总是编译”(您可以通过右键单击某个类并选择“总是编译”来选择自己设置此选项)。

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

+0

是的 - 看起来像“总是编译”是有点误导 - 你只能选择一个文件总是编译:-p – 2009-10-05 15:40:19

+0

从纯粹的程序立场来看,没有一个真正的副本闪光我听说过时间线,但从来没有使用它:-p – 2009-10-05 15:42:20

+0

现在,我意识到FD在幕后做魔术,我可以进一步调查;我喜欢as3如何让你控制所有东西,但是我对这个“魔法”来自哪里以及它是否可配置有点困惑 - 主要是为了知道它是如何工作的:-p – 2009-10-05 15:51:22

1

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

所以一个preloader不是什么奇特的事情只是另一个类来做一份工作,所以你通过传递一个URL来告诉它将您想要加载的swf字符串串起来。

预加载器是一个类,你可以做任何你想要的东西,但最好保持SWF文件的大小。

对于一个非常好的教程检查http://www.gotoandlearn.com/play?id=85。李还有一个链接到要下载的文件。

+0

是的,我明白这种方法是如何工作的 - 这是什么FD /闪存在这个例子中,它是一个单一的瑞士法郎,我似乎无法理解:-p – 2009-10-05 15:37:17

+0

从另一个答案啊确定我认为,Flash开发人员自动生成预加载SWF或什么?我使用FDT,所以我不熟悉Flash开发。虽然有点酷。 – Allan 2009-10-05 22:57:44