将多个 SWF 文件合并为一个 SWF 以进行 iOS 部署
2013-09-05 07:56
267 查看
要求
必备知识
本文专为熟悉 Flash Builder 或 Flash Professional 的高级开发人员编写。您还需要了解 Mac OS X 或 Windows 命令行的使用方法。其他必要产品
REBOL/View
用户级别
高级必需产品
Flash Professional (下载试用版)Flash Builder (下载试用版)
范例文件
rswf-join-example.zip在 Flash 平台上进行游戏开发经常遇到的其中一个问题是,如何将构成游戏的大量 SWF 合并成为一个 SWF,从而方便进行 iOS 部署。例如,Machinarium(一种由 Amanita Design 开发的点击式益智游戏)包含 28 个 SWF 文件。当 Amanita Design 使用 Adobe AIR 生成 iPad 版本的 Machinarium 时,他们需要设法将多个 SWF 文件加入一个 SWF 文件(参见图 1)。
图 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 上部署您的游戏:第一步是像往常一样在 Flash Professional 或 Flash Builder 中构建 SWF,但将各 SWF 转换为类。无需通过 Loader 类、SWFLoader 或类似机制动态加载 SWF,而是实例化 SWF 类。一旦您合并所有 SWF,将会实例化自身内容,而不是加载它们。
下载并解压本文提供的示例文件 。
下载并安装REBOL/View和图形版本的 REBOL。
导航至示例文件夹,找到您可能需要更新以自定义自身工作流程的三个脚本:compile-and-run.r、Game.bat 和 Game.rswf。
如有兴趣,您可以在文本编辑器中深入了解 compile-and-run.r 文件。这是一个 REBOL 脚本,用以执行一些初步设置及运行 Game.bat。
在文本编辑器中打开 Game.bat,编辑 AIR SDK 路径,以便使其指向您安装的 AIR Debug Launcher (ADL) 版本。该文件包含以下代码行:
cd ./public/ adl Game.xml
将它们更改如下:
cd ./public/ [/path/to/your/AIR_SDK]/bin/adl Game.xml
在文本编辑器中打开 Game.rswf,更新
import-swf行以反映您要合并的 SWF。初始示例加入了四个 SWF 文件:
import-swf %assets/Preloader.swf no show import-swf %assets/ExampleLevel1.swf no show import-swf %assets/ExampleLevel2.swf no show import-swf %assets/ExampleMain.swf no show
运行 REBOL 脚本。(将下面的
rebol命令路径更改为其安装位置。)
/path/to/REBOL/rebol compile-and-run.r
注意:如果您在尝试运行任何可执行文件时看到权限拒绝错误,请确保这些文件具有适当的权限设置。例如,您可以使用
chmod设置权限(用更加严格的设置替代
755或
775):
chmod 777 filename.bat
当完成该脚本后,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。相关文章推荐
- 将多个 SWF 文件合并为一个 SWF 以进行 iOS 部署
- iOS两个.a文件合并成一个.a文件
- iOS使用xib文件创建一个组件为子控件,进行复用
- 编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。
- 黑马程序员 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中, a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔
- 把微信iOS版SDK中的静态 .a 文件合并成一个真正全兼容的静态文件
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔
- ios 百度地图使用lipo命令将设备和模拟器的.a合并成一个通用的.a文件
- ios avfoundation 合并音频到一个视频文件 avurlassettrack
- iOS使用xib文件创建一个组件为子控件,进行复用
- 使用java类SequenceInputStream 对一个文件进行分割和合并的操作
- ios avfoundation 合并音频到一个视频文件 avurlassettrack
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔
- 面试题,编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
- 编写一个程序,将 a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt 文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔
- 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔
- 编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。
- ,编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔.