在嵌入式AS3中包含图像的更好方法是什么?

Mar*_*ney 3 embed actionscript image actionscript-3 flixel

我正在组装一个Flash游戏(使用Flixel),我有很多精灵的图像(大多数是.png格式)我需要包含在我的游戏中.我习惯使用以下代码:

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

为了包含图像文件.除了嵌入之外,有没有办法可以做到这一点?如果可能的话,我想使用for循环,按编号抓取所有需要的文件.这种方式相反,如果为每种船型提供多条线(以获取其精灵,图标,商店视图等),我只需更改变量(例如NUM_SHIP_TYPES)并按新号船的编号添加文件.

是嵌入文件包含在.swf中的唯一方法,还是有其他方法可以做到这一点?或者是有办法,我可以用一个for循环嵌入?

lau*_*ent 5

如果您有大量资产,最好的方法是将它们保留为外部文件并用于Loader加载它们.

这样,您可以显示进度条,正如您所说,它还可以更轻松地管理您的资产.


WOR*_*MSS 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;
} }
Run Code Online (Sandbox Code Playgroud)

.

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;
} }
Run Code Online (Sandbox Code Playgroud)

但正如我所说的,这只适用于小型案例场景,但它确实意味着一切都更加细分,如果你要创建一个界面,它可以很容易地为工厂模式完成.