2009-10-05 52 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