使用 Flash flex 策略和问题

Posted

技术标签:

【中文标题】使用 Flash flex 策略和问题【英文标题】:Working with flash flex strategy and problems 【发布时间】:2012-04-17 19:39:05 【问题描述】:

在 Flash 中管理大型游戏项目的最佳实践是什么。

经过一段时间后,我发现将 Flex 与 Flash Professional 相结合为您提供了用于快速开发、在大型团队中工作以及使用 SVN 的最佳工具。

我的项目分为 Flex 库项目和主 Flex 项目。

设计师PhotoshopIllustrator 中工作,然后直接导出到 flex 或 Flash Professional。 AnimatorsFlash Professional工作,每个人都有自己的flx文件夹(解压后的fla格式,从CS5开始支持,他的数据不是二进制的,所以最好用SVN) ,并且可以创建图形逻辑类,最后他将他的解决方案导出到带有 swc 文件的 flex 中。 开发人员Flex 工作,负责管理主项目,他们从每个人那里获取资源并整合在一起,flex 是唯一处理游戏逻辑以及服务器通信的地方.

最近我在处理复杂的 flex 组件时发现了两个问题,其中一部分是在 flash pro 中创建的。 我想在我的 Flex 组件中放置一个影片剪辑,在该影片剪辑中我想放置另一个 flex 组件。

这就是我所做的:我从 flash pro 创建了一个影片剪辑,使用命令将其转换为 flex 容器,并将 flex 内容持有者正方形放置在影片剪辑中,将其导出到 swc,然后从 flex 我将其直接添加到mxml,甚至可以在 flex 设计模式下预览。 这是我做不到的:

我无法使用时间轴动画移动 flex 内容,只能使用代码 我无法在位于其他影片剪辑中的影片剪辑中插入弹性内容,即使它们都是弹性容器。

请告诉我您对我的策略有何看法以及您是否知道解决这些问题的方法

【问题讨论】:

【参考方案1】:

我根本不会将 .swcs 用于图形资产。正如您所提到的,您将无法访问从 Flash 生成的内容。另外更大的问题是,.fla 文件也包含逻辑,因此修改某些内容也需要 Flash 专业版(设计师往往会在他们的 fla-s 中创建一个巨大的混乱,这很痛苦)。因此,要进行简单的修改,您可能需要在 Flash builder 和 Flash Professional 之间来回切换。另外,将代码放在图形资产文件中是一种非常糟糕的做法。

我建议使用以下工作流程来保持代码和图形完全分离:

    设计师应将每个静态(非动画)矢量资源导出到 .fxg 文件中。 (例如,对于一个按钮,您将有 3 个 .fxg 文件:button_up.fxg、button_over.fxg、button_down.fxg) Flex 中的 Fxg 支持非常棒,您可以直接编辑文件,而且它们真的很容易嵌入。例如,您可以在 MXML 中执行此操作:<gfx:button_up x="100"/>,或将其嵌入为 SpriteAsset。请注意,这些在运行时很难加载,但这很少会成为问题,因为 .fxg 文件往往非常小。对于真正复杂的矢量资产,将其放入 .swf 文件(第 4 点)对性能更好(或将其转换为位图,复杂的矢量可以轻松杀死 FP)。但请注意,.FXG 有一些限制,例如您不能导出静态文本,或者嵌套了 9 切片缩放。

    将每个静态位图资源导出为 .png。您可以在 Flex 中轻松嵌入/加载这些内容。对视频做同样的事情(我对视频的工作不多,但 .flv 对我来说还可以)。

    对于动画矢量资源(在 Flash 中制作的影片),请执行以下操作:将影片剪辑放在 Flash 中舞台的根部,选中符号属性中的“导出到 Actionscript”和“在第一帧中导出” .例如,这样的包可以包含一个角色的所有动画。然后简单地发布这个项目,然后你可以加载它,或者像这样嵌入它:[Embed(source='char1.swf', symbol='run')] private var runcl:Class; 这些文件不会有任何动作脚本代码,但有时我发现,我需要向它们添加一些简单的逻辑(主要是 stop() 和play() 命令)为此,请使用addFrameScript() 命令。

    为声音使用 .mp3,并将您的字体直接嵌入到 Flex。如果图形资产有一些静态文本,请将其拆分为向量。

【讨论】:

以上是关于使用 Flash flex 策略和问题的主要内容,如果未能解决你的问题,请参考以下文章

如何正确部署 FLEX\FLASH swf 应用程序?

Shockwave、Flash 和 Flex 之间有啥区别?

如何在 Flash 中创建 Flex Display 组件?

如何在 Flex 中使用 UIComponent/Flash

如何创建在 Flex 和 Flash 中可用的超类?

程序员应该如何开始使用Flash / Flex / ActionScript?