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

时间:2011-11-04 05:03:30

标签: actionscript-3 image actionscript embed flixel

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

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

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

嵌入文件是否包含在.swf中的唯一方法是嵌入,还是有其他方法可以执行此操作?或者有没有办法可以使用for循环嵌入?

3 个答案:

答案 0 :(得分:5)

如果您拥有大量资源,最好的方法是将它们保留为外部文件,然后使用Loader加载它们。

通过这种方式,您可以显示进度条,正如您所说,它还可以更轻松地管理您的资产。

答案 1 :(得分: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;
} }

但正如我所说,这只是在一个小案例场景中有用,但它确实意味着一切都更加细分,如果你要制作一个界面,它可以很容易地为工厂模式完成。

答案 2 :(得分:0)

您是想让对象在同一个swf中随时可用,还是想在外部加载它们?这是我想到的第一个问题。

  • 如果你想在swf中嵌入图像:将它们全部添加到fla中,从中创建一个swc并在项目中使用它们。当你想改变什么时,改变fla。重新生成swc。重新编译。

  • 如果您希望在运行时加载图像,请使用UrlLoader,我个人更喜欢使用LoaderMax,它是greensock包的一部分。它为您提供了更多的加载选项。以下是帮助您解决问题的示例:http://www.greensock.com/loadermax-tips/