加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

actionscript-3 – 大型Flash / AS3项目的工作流程

发布时间:2020-12-15 07:24:17 所属栏目:百科 来源:网络整理
导读:我目前正在开发一个相当大的UI重型Flash游戏.我们的团队现在已经为此工作了大约9个月.我们都没有任何以前的Flash经验,因此我们在此期间不断改进我们的工作流程.但是,我们仍然觉得我们现在所做的并不是最佳的,特别是编码员和艺术家之间的界面,所以我想知道其
我目前正在开发一个相当大的UI重型Flash游戏.我们的团队现在已经为此工作了大约9个月.我们都没有任何以前的Flash经验,因此我们在此期间不断改进我们的工作流程.但是,我们仍然觉得我们现在所做的并不是最佳的,特别是编码员和艺术家之间的界面,所以我想知道其他团队是如何工作的.

理想的工作流程应满足以下要求:

1.重用的UI元素只定义一次

这意味着,如果我们想要更改字体或按钮样式,我们不希望通过所有菜单并手动更改它们.我们希望它们在一个中心位置定义,并且仅从那里引用.如果资产不仅在编辑时共享,而且在运行时共享,即它们仅被下载一次,则奖励积分.

2.一切都按需加载

目前,我们有两个不同的加载步骤:首先,我们加载菜单库.完成后,玩家可以与所有菜单进行交互.然后,我们开始加载实际的游戏数据.但是,初始加载时间仍然太长,导致我们失去许多潜在的参与者.我们真正想做的是只加载主菜单所需的最低限度,然后仅在播放器尝试实际打开相应菜单时加载其他所有内容. Zuma Blitz真的很好.

没有编码员的帮助,艺术家可以进行微小的改变

如果在不改变实际功能的情况下重新设计菜单,艺术家应该可以在Flash CS6中自行完成.这需要在艺术和代码之间建立清晰的界面,艺术家也应该可以在将更改发送给编码人员之前对其进行测试和调试.

我们当前的工作流程如下所示:艺术家在Flash CS6中将屏幕构建为MovieClip并将其导出为SWF.在代码端,从屏幕SWF加载MovieClip,并将它们用作基于PureMVC的系统中的View类. Mediators按实例名称访问视图中的文本字段等元素.

这很容易出错,因为没有中心位置来定义接口(即实例名称).编码器和艺术家之间需要大量的通信开销.此外,它还会在代码和动画片段的内部结构之间创建依赖关系.当艺术家想要对其应用某些效果时,他们无法将文本字段附加到不同的子动画片段.

我们正在尝试使用基于事件的界面,该界面要求艺术家向movieclip添加几行代码.这比以前更不易出错且相互依赖,但除非我们编写额外的测试和调试工具,否则它仍然不能完全满足(3).这一定是一个常见的问题,我很难想象没有更简单的方法.

对于(2),我们也开始构建一个自制的解决方案,但同样,这是一个常见的任务,必须有一些我们可以使用的东西.

那么,有经验的Flash开发人员如何管理这样的大型项目?

解决方法

我有一些想法,但它们是基于我的编码风格,这对我来说是独一无二的.

1.重用的UI元素只定义一次
根据您重复使用的内容,这可以像定义库符号并使用它一样简单.可以在不进行搜索和替换的情况下替换字体,也可以在字体嵌入菜单中简单地换出字体.

对于跨xfl的共享,你可以使用Flash Pro Project.请记住,这有一定的时间开销(文件将在你打开或保存时更新,Flash与项目崩溃更多,它可以是一个尝试同时处理来自同一项目的两个文件的坏主意).

有些人使用swcs,但这样做需要您在代码中实例化其中的内容,这可能对您的工作流程无效.我只将它们用于音频,我发现它中的对象必须在你指定为AS编译帧的帧之前或之前编译,否则声音无法正确实例化.我怀疑从swc实例化的任何事情都是如此.

2.一切都按需加载
Flash中保存最好的秘密之一就是使用编译器的时间表和受过教育的使用很容易实现.以下是它的工作原理:

如果您的ActionScript编译框架是一个大于1的框架,那么以下是编译的方式:

>第1帧之前:

>第1帧使用的任何视觉资产和嵌入声音
>您的主文档类,以及直接从文档类引用的任何类(这是编写接口的一个很好的理由)

>在AS编译框架(N)之前:

>您的AS类(代码,不一定是视觉/音频资产)
>在帧N中设置为AS导出的任何库符号的视觉和音频资产(即使它们未在swf中使用)

>在时间线上首次使用资产的框架之前:

>所有库符号中的视觉/音频资产,其中未检查第N帧中的AS导出.

如果你在第1帧上放置一个微调器加载图形并且你选择了第10帧作为导出帧,那么如果你让电影播放直到它到达第10帧,那么它将如何加载:

>如果您的微调器中有任何重型资产或在主文档类中直接引用,用户将在下载此内容时看到空白屏幕
>旋转器将变得可见并旋转
>一旦你的AS类加载了,以及在第10帧中设置为导出的库符号和实际在第10帧上的资产,你将看到这些资产,并且你需要使用它们的所有内容都准备就绪.
> swf的其余部分将继续在后台加载,更新framesLoaded.

我实际上使用了第10帧对象的setter组合,加上一个ENTER_FRAME处理程序来检查我们是否还在第10帧.有些事情我必须做的更容易基于一个和其他更好地做其他方式.

没有编码员的帮助,艺术家可以进行微小的改变
如果代码全部在库符号的基类中,则艺术家不需要理解它,只要它们不删除或更改所需的实例名称即可.我尝试通过观察ADDED_TO_STAGE(捕获阶段)并按类型观察显示对象来最小化对实例名称的依赖.一旦我引用了相应类型的对象,就可以很容易地在该对象上观察REMOVED_FROM_STAGE以取消引用它.这类似于RobotLegs和Swiz等框架的工作方式.

此外,我使用了一个名为“语义闪存”的概念,我根据标签做了很多工作.我有一个基类FrameLabelCip,它具有内置的nextLabel()和previousLabel()功能,以及调度FRAME_LABEL_CONSTRUCTED事件.从故事板事件名称到Flash标签名称非常容易,只需构建图形bang-bang-bang.

我大量使用Graphic Symbols来跨多个标签同步图形(例如,项目符号列表),而不是依赖于代码.这个动画师的诀窍使这些东西既健壮又容易接近技术水平较低的队友.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读