3

我正在制作一个 Flash 游戏(使用 Flixel),并且我有很多精灵的图像(主要是 .png 格式)需要包含在我的游戏中。我习惯使用如下代码:

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

为了包含图像文件。除了嵌入之外,我还有其他方法可以做到这一点吗?如果可能,我想使用 for 循环,按编号获取每个需要的文件。这样,如果每种船类型都有几行(获取它的精灵、图标、商店视图等),我可以只更改一个变量(例如 NUM_SHIP_TYPES)并按编号为新船添加文件。

嵌入文件是包含在 .swf 中的唯一方法,还是有另一种方法可以做到这一点?或者有没有办法可以使用带有嵌入的for循环?

4

3 回答 3

5

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

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

于 2011-11-04T05:14:32.000 回答
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;
} }

但正如我所说,这仅在小情况下有益,但这确实意味着一切都更加细分,如果你要制作一个接口,它可以很容易地为工厂模式完成。

于 2011-11-04T09:19:20.393 回答
0

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

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

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

于 2011-11-04T06:50:37.680 回答