在 AS3 中包含图像比嵌入更好的方法?
Posted
技术标签:
【中文标题】在 AS3 中包含图像比嵌入更好的方法?【英文标题】:Better way to include images in AS3 than embed? 【发布时间】:2011-12-21 17:57:35 【问题描述】:我正在制作一个 Flash 游戏(使用 Flixel),我有很多 sprite,它们的图像(主要是 .png 格式)需要包含在我的游戏中。我习惯使用如下代码:
[Embed(source = "../../lib/ship-0001.png")]private var _ship0001Sprite:Class;
为了包含一个图像文件。除了嵌入之外,我还有其他方法可以做到这一点吗?如果可能,我想使用 for 循环,按编号获取每个需要的文件。这样,如果每种船类型都有几行(抓取它的精灵、图标、商店视图等),我可以只更改一个变量(例如 NUM_SHIP_TYPES)并按编号为新船添加文件。
在文件包含在 .swf 中的情况下,嵌入是唯一的方法,还是有其他方法可以做到这一点?或者有没有办法我可以使用 for 循环 with embed?
【问题讨论】:
【参考方案1】:如果您有很多资源,最好的方法是将它们保留为外部文件并使用Loader
加载它们。
这样您就可以显示进度条,而且正如您所说,它还可以更轻松地管理您的资产。
【讨论】:
你的意思是Loader
?【参考方案2】:
您是想让对象在同一个 swf 中随时可用,还是要从外部加载它们。会是我想到的第一个问题。
如果您想在 swf 中嵌入图像:将它们全部添加到一个 fla 中,从它创建一个 swc 并在您的项目中使用它们。当你想改变一些东西时,改变fla。重新生成swc。重新编译。
如果您希望在运行时加载图像,请使用 UrlLoader,我个人更喜欢使用 LoaderMax,它是 greensock 包的一部分。它为您提供了更多使用加载的选项。这是一个可以帮助您的示例:http://www.greensock.com/loadermax-tips/
【讨论】:
【参考方案3】:这可能不是一个受欢迎的答案。但这取决于偏好。 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;
但正如我所说,这仅在小情况下有益,但这确实意味着一切都更加细分,如果您要制作接口,则可以轻松完成工厂模式。
【讨论】:
这实际上是一个好主意,尽管您可能是对的,这不是最佳实践。如果我这样做,每种船型都会有自己的文件夹,并且该船型的所有内容都将在该文件夹中。谢谢! 这些类文件可以通过简单的脚本或工具自动生成,只需更改文件名中的数字并将它们替换为预定义的模式。以上是关于在 AS3 中包含图像比嵌入更好的方法?的主要内容,如果未能解决你的问题,请参考以下文章
恢复 segued iOS UIViewControllers 的更好方法