2011-11-04 20 views
3

我正在組織一個Flash遊戲(使用Flixel),我有很多精靈的圖像(.png格式,大多數)我需要包含在我的遊戲中。我習慣於使用如下代碼:在嵌入AS3中包含圖像的更好方法?

[Embed(source = "../../lib/ship-0001.png")]private var _ship0001Sprite:Class; 

爲了包含圖像文件。有沒有一種方法可以做到這一點,而不是嵌入?如果可能的話,我想使用for循環,通過編號抓取每個需要的文件。這種方式,而不是如果爲每種船型(抓住它的精靈,圖標,商店視圖等)有幾行,我可以改變一個變量(例如NUM_SHIP_TYPES)並添加新船的編號文件。

是嵌入的唯一方法來做到這一點,文件包含在.swf中,或者有另一種方式,我可以做到這一點?或者有沒有辦法可以使用for循環嵌入?

回答

5

這可能不是一個流行的答案。但這取決於喜好。 I'm not trying to start a best practices discussion, just listing a possibility.

如果您有每艘船的多個圖像。並且每艘船的圖像數量相同,那麼下面的圖像可能就是一種可能性。不,然後完全忽略我的建議。

對您的船舶類型中的每一個文件夾,然後在該文件夾中的類文件,並沿側面的類文件該文件夾內將您的圖像..

package shipimages.ship1 { class Ship1Images { 
    [Embed(source="0001.png")] public var img0001:Class; 
    [Embed(source="0002.png")] public var img0002:Class; 
    [Embed(source="0003.png")] public var img0003:Class; 
} } 

package shipimages.ship2 { class Ship2Images { 
    [Embed(source="0001.png")] public var img0001:Class; 
    [Embed(source="0002.png")] public var img0002:Class; 
    [Embed(source="0003.png")] public var img0003:Class; 
} } 

但正如我所說,這只是一個小的案例場景有益的,但它確實意味着一切都更加副分割,如果你是做一個接口,它可以爲工廠模式輕鬆完成。

+0

這實際上是個好主意,雖然你可能是對的,但這不是最佳做法。如果我這樣做,每一種船隻都有自己的文件夾,並且該船型的所有內容都將在該文件夾中。 謝謝! –

+0

這些類文件可以通過一個簡單的腳本或工具自動生成,它只是改變文件名中的數字並將其替換爲預定義的模式。 – SasQ

5

如果您有很多資產,最好的方法是將它們保留爲外部文件並使用Loader加載它們。

通過這種方式,您可以顯示進度欄,並且如您所說,還可以更輕鬆地管理您的資產。

+0

你的意思是['Loader'](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6)? – Marty

+0

對不起,我的意思是裝載機。 –

0

你想要在同一個swf中容易得到對象嗎?還是想在外部加載它們?這是我想到的第一個問題。

  • 如果你想在swf中嵌入圖像:把它們全部添加到fla中,創建一個swc並在你的項目中使用它們。當你想改變某些東西時,改變fla。重新生成swc。重新編譯。

  • 如果您想要在運行時加載圖像,請使用UrlLoader,我個人更喜歡使用LoaderMax,它是greensock軟件包的一部分。它給你更多的選擇來處理加載。這裏有一個例子可以幫助你:http://www.greensock.com/loadermax-tips/