2014-02-06 39 views
0

我建立的空氣移動應用程序,並希望加載一組不同的圖形SD和HD設備的,我有我的資源類的設置如下:將導入具有嵌入元標記的類而不實例化類加載它們?

SD圖形

package view.graphics 
{ 
    public class MainMenuGraphicsSD extends GraphicsResource 
    { 
     [Embed(source = "../../../lib/graphics/mainmenu/logo.png")] 
     public static const logo:Class; 
    } 
} 

然後是HD

package view.graphics 
{ 
    public class MainMenuGraphicsHD extends GraphicsResource 
    { 
     [Embed(source = "../../../lib/graphics/mainmenu/logoHD.png")] 
     public static const logo:Class; 
    } 
} 

然後在主菜單類我都不得不

import view.graphics.MainMenuGraphicsHD; 
import view.graphics.MainMenuGraphicsSD; 

我通過類名資產管理人排隊裏面的物品,並預裝他們...

Assets.getInstance().assets.enqueue(isHD ? MainMenuGraphicsHD : MainMenuGraphicsSD); 

將全部資產獲得嵌入但只有相關的定義中引用還是應該工作,我怎麼想它只能加載相關資源?

回答

0

通過此代碼,兩個資產都將被嵌入,並且只有相關的資產將被實例化。如果要將這些資源加載到外部以減小SWF大小,則需要使用Loader s,然後通過loader.content參考內容。例如,您可以編譯兩個僅包含資產的SWF,一個用於SD,另一個用於HD,一旦解決方案建立,就加載相關的SWF,並使用the way described in this question's answer從那裏實例化類。

+0

它們正在爲移動設備編譯,所以我假設這兩個資產都將嵌入到ipa或apk中,但是這兩組資產是否會在運行時加載到RAM中? – rorypicko

+0

不,只有被引用的資產將被實例化,也被加載到RAM中。請看,位圖佔用大量RAM空間,而嵌入式資產通常花費少得多(類描述加上JPG/PNG的字節數組遠遠低於擴展的「BitmapData」),所以從資產到位圖的實際轉換是隻爲選定的資產完成。 – Vesper

相關問題