首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为flash游戏保留媒体资源的正确方法

为flash游戏保留媒体资源的正确方法
EN

Stack Overflow用户
提问于 2011-06-10 15:30:32
回答 2查看 820关注 0票数 1

我们正在开发一个史诗游戏使用flash cs5和ActionScript3(没有任何弹性)。库中有许多我们需要使用的图像和其他媒体内容。早期我只是将它们保存在我的主.fla中,但后来编译swf变得非常慢(更多的图像-更多的时间来编译)。所以我把我所有的镜像放到闪存之外的文件系统中,这很有帮助。但随后出现了一些延迟和错误,特别是当我们在远程服务器上测试游戏时。看起来文件没有时间加载(或者加载不完整)--尽管我使用onload等事件按顺序正确地完成了加载。

最后,我创建了另一个包含所有图像和资源的swf。我在我的主swf中加载它一次,只有当我需要添加新图像时才编译它。它工作得相当好,但我觉得我做错了,或者有另一种更容易组织资源的正确方法。第二个swf也有一些小问题;例如,我必须让用户等待,直到它加载到我的第一个文件中,如果我想从我的桌面运行,我必须始终将这两个文件放在一个地方。而且,随着图像数量的增长,重新编译我的第二个swf变得很烦人,即使我不需要经常这样做。

因此,我正在寻找一种公认的、常见的、正确的方法来组织我的游戏资源,供游戏开发人员使用,以供我学习和使用。

EN

回答 2

Stack Overflow用户

发布于 2011-06-10 16:33:13

您需要做的是构建一个资产管理器类(或多个类)。这个类应该处理所有资产的加载,这样您就可以轻松地更改加载它们的方式,而不必到处进行更改。

合理的开发方法是从外部加载文件,您可以轻松地替换它们,如果您在团队中工作,则不必处理主.fla文件上的冲突问题。(这意味着每个文件都是独立的,而不是单一的swf资产)

你可能想要使用一个加载库,因为它的编码不是很有趣,所以我经常使用BulkLoader。它有点偏大,但工作得很好。

但是,在部署到服务器时,根据游戏类型的不同,将所有这些文件放到服务器上可能有点麻烦。许多flash游戏网站甚至不支持多个文件,而是更喜欢一个巨大的.swf。此时是您的资产加载类大放异彩的时候了,因为它都是由一个类包装的,所以您可以更改它的内部工作方式以使用.zip文件,或者如果您想要单个文件,[Embed]标记(需要mxmlc编译器,但它非常容易设置)

还有,请不要使用警告,它会给你带来比解决问题更多的问题。

票数 4
EN

Stack Overflow用户

发布于 2011-06-10 16:03:27

flash开发人员可以通过多种方式为游戏组织资源,但最好的方法取决于您正在开发的游戏类型。

许多游戏使用tiles来构建它们的关卡,使用spritesheets来构建实体/角色/等等,因此可以找到几个具有此功能的框架-内置PushbuttonEngine (http://pushbuttonengine.com/) springs但我假设您已经在这一点上取得了太大进展,不能切换引擎。

您可能想要检查的一种策略是将每个磁贴集(或相关资产组)放入一个zip文件中,然后加载该文件。有许多优秀的AS3库可以让您在闪存中解析zip文件,但nochump.com实现可能是最好的:http://nochump.com/blog/archives/15

这样,您仍然可以以模块化的方式工作,而不必每次发生变化时都编译swf文件。你仍然需要在任何时候有变化的时候解压/压缩你的资产,但这仍然比在Flash中编译或在运行时单独加载所有资产要快得多(这可能会杀死你的100服务器,不得不为一个游戏会话处理100个请求)。

另外,既然你抱怨Flash的编译时间太长,试一试:在Actionscript设置下,取消选中标记为“警告模式”的复选框。警告模式给你的编译器警告明显的东西,如无类型变量或重复变量,等等。但是关闭它确实可以减少编译时间。

当我在一个非常耗费资产的项目上工作时,我发现了这一点,在禁用它之后,我花了30秒到5秒来编译我的swf。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6303273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档