2012-09-22 82 views
1

我知道有很多關於ActionScript中的框架元數據標籤的帖子, ,但我仍然沒有找到我的問題的答案。ActionScript框架元數據不工作

問題是,我已指定上述我的主要類的頭一個幀元數據標籤:

package gameUI { 
... 
    [Frame(factoryClass="gameUI.MyPreloader")] 
    public class Main extends Sprite { 

     public function Main() 
     { 
      if (stage) 
       init(); 
      else 
       addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { ... 

我也有在同一封裝中預加載類(gameUI)稱爲MyPreloader.as

package gameUI 
{ 
    // imports.. 

    public class MyPreloader extends MovieClip 
    { 
     // private vars .. 

     public function MyPreloader() 
     { 
      trace('preloader START'); 
      ... 

在我的IDE中,我沒有收到任何錯誤或警告。它編譯沒有問題。 但是,當我運行它,它只是跳過幀元標記,只是運行Main類的代碼。 (MyPreloader的構造函數中的軌跡從不打印出來)。

我在想也許它與編譯器設置中指定的一些參數有關。我已經嘗試了一些東西,aditional編譯器參數,但它從來沒有奏效。

有誰知道他爲什麼忽略Frame元標籤? 我真的很沮喪..

我使用Flash Builder 4.6。 使用Flex SDK 4.6編譯。

謝謝。

回答

0

你的主類是一個精靈,所以它不能有兩個框架。這可能是你的問題的一部分。

但是,這可能是因爲您可以使用更容易調試的流程來實現最終目標。例如,這是one approach。我個人通常只是將我的默認輸出框設置爲10,在第一幀放置一個微調器併發出一個play()。

需要在幀1上編譯的唯一資源位於微調器中。然後,當Spinner旋轉並加載資源時它會暫停(因爲它必須在它可以繼續之前加載編譯的所有內容)。一旦所有資產都加載完畢,它自然會進入第10幀。我將在第10幀的時間線上有一個實例,它有一個關聯的getter和setter,所以當setter觸發時,我知道加載完成。

我僅在啓動時必須加載的資產(例如,時間線上從不使用的聲音或視覺對象)中選中「在第10幀中導出」。

這種方法的優點是可以更早地獲取真實內容(因爲只有在默認框架上編譯的資源必須加載才能顯示任何內容),但缺點是顯示%進度,因爲您不知道電影的百分比是在第10幀編譯的,需要在它開始之前加載。

因此,簡言之:

  1. 嘗試使基類的FLA的MovieClip
  2. 如果不起作用,考慮改變做法
+0

感謝您的答覆。我將Main類的父類更改爲MovieClip,但仍然沒有改變。我將在接下來的幾天嘗試你的另一種方法。有消息通知你! – Andries