将多个 SWF 文件合并为一个 SWF 以进行 iOS 部署

http://www.adobe.com/cn/devnet/flash/articles/join-multiple-swf-files.html


必备知识

本文专为熟悉 Flash Builder 或 Flash Professional 的高级开发人员编写。您还需要了解 Mac OS X 或 Windows 命令行的使用方法。

 

其他必要产品

用户级别

高级

必需产品

范例文件

在 Flash 平台上进行游戏开发经常遇到的其中一个问题是,如何将构成游戏的大量 SWF 合并成为一个 SWF,从而方便进行 iOS 部署。例如,Machinarium(一种由 Amanita Design 开发的点击式益智游戏)包含 28 个 SWF 文件。当 Amanita Design 使用 Adobe AIR 生成 iPad 版本的 Machinarium 时,他们需要设法将多个 SWF 文件加入一个 SWF 文件(参见图 1)。

图 1. 将多个 SWF 文件合并为一个 SWF 文件,准备创建单一 IPA 文件。
图 1. 将多个 SWF 文件合并为一个 SWF 文件,准备创建单一 IPA 文件。

在文章使用 SWC 文件构建具有多个 iOS SWF 文件的大型 Flash 和 AIR 项目中,我介绍了一种依赖 SWC 库的技术来解决这一问题。但是,在某些情况下,您或许更喜欢使用 SWF,而不是 SWC 文件。例如,如果您的游戏将在 Android 及 iOS 上运行,使用 SWF 工作流程可能会更加简单。请记住,在 Android 上,您可以于运行时加载 SWF 文件,从而实现内存有效使用。而在 iOS 上,您仍然要时刻关注内存使用,特别是在您将所有代码纳入一个 SWF 的情况下。将所有不包含 ActionScript(包括图片、视频和音乐)的资产分解成 SWF 文件也是一种有效做法,这样您的游戏就能按需加载,随后于不再需要时予以丢弃。

分离资产后,您仍然需要设法加入确实包含 ActionScript 的 SWF。在本文中,我介绍的这项技术由 David "Oldes" Oliva(Machinarium 首席开发员)使用,用以利用 REBOL 脚本组合 SWF。有关 REBOL 的更多信息,请访问 http://www.rebol.com

将多个 SWF 文件合并为一个 SWF 文件的步骤

请按照以下步骤加入 SWF 文件,准备在 iOS 上部署您的游戏:

  1. 第一步是像往常一样在 Flash Professional 或 Flash Builder 中构建 SWF,但将各 SWF 转换为类。无需通过 Loader 类、SWFLoader 或类似机制动态加载 SWF,而是实例化 SWF 类。一旦您合并所有 SWF,将会实例化自身内容,而不是加载它们。
  2. 下载并解压本文提供的示例文件 。
  3. 下载并安装REBOL/View和图形版本的 REBOL。
  4. 导航至示例文件夹,找到您可能需要更新以自定义自身工作流程的三个脚本:compile-and-run.r、Game.bat 和 Game.rswf。
  5. 如有兴趣,您可以在文本编辑器中深入了解 compile-and-run.r 文件。这是一个 REBOL 脚本,用以执行一些初步设置及运行 Game.bat。
  6. 在文本编辑器中打开 Game.bat,编辑 AIR SDK 路径,以便使其指向您安装的 AIR Debug Launcher (ADL) 版本。该文件包含以下代码行:
cd ./public/adl Game.xml

将它们更改如下:

cd ./public/[/path/to/your/AIR_SDK]/bin/adl Game.xml
  1. 在文本编辑器中打开 Game.rswf,更新import-swf 行以反映您要合并的 SWF。初始示例加入了四个 SWF 文件:
import-swf %assets/Preloader.swf no showimport-swf %assets/ExampleLevel1.swf no showimport-swf %assets/ExampleLevel2.swf no showimport-swf %assets/ExampleMain.swf no show
  1. 运行 REBOL 脚本。(将下面的 rebol 命令路径更改为其安装位置。)
/path/to/REBOL/rebol compile-and-run.r

注意:如果您在尝试运行任何可执行文件时看到权限拒绝错误,请确保这些文件具有适当的权限设置。例如,您可以使用 chmod 设置权限(用更加严格的设置替代 755 或 775):

chmod 777 filename.bat
  1. 当完成该脚本后,SWF 将在 Flash Player 中打开,您可以使用 AIR SDK 中包含的 adt 工具编译最终的 iOS IPA 文件。例如,您可以在命令行运行以下代码,酌情替换括号内的部分内容:
[AIRSDK]/bin/adt -package -target ipa-app-store -provisioning-profile [YOURPROFILE].mobileprovision -storetype pkcs12 -keystore [YOURCERTIFICATE].p12 -storepass [CERTIFICATE_PASSWORD] [FINALAPP].ipa air-app-descriptor.xml [SWFTOCOMPILE].swf

下一步阅读方向

如果您认为 SWC 方法能够更好地满足您的需求,请参见我的文章使用 SWC 文件构建具有多个 iOS SWF 文件的大型 Flash 和 AIR 项目。要了解有关 REBOL 的更多信息,请参阅REBOL 快速入门。如果您对 Rebol/Flash Dialect (RSWF) 的主要规则感兴趣,Oldes 已在这里已在这里对它们进行了记录整理。最后,如果您想了解小型独立游戏开发工作室如何利用 Flash Platform,请访问 Amanita Design

Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License+Adobe Commercial Rights

本产品经 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 许可。Adobe 提供超出该许可范围、与本产品包含的代码示例相关的权限。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值