废话不多说,纯粹Flash开发iOS游戏,期间总结到的经验分享沉淀。

 

开发环境

Windows 7 SP1

Flash Builder 4.6 with AIR 3.4

Flash CS6 with Update 2

 

开启GPU加速

clip_image001

位图动画在这个模式下会有明显性能提升。

但矢量图形内容会以最低品质呈现。

 

MovieClip的性能

Flash CS6 提供将包含多个可见对象转换成扁平位图的功能,我们在对矢量图转换为位图后,在开启GPU加速的情况下,在iPhone 4上测试MovieClip的动画性能。其实并不是想象中那么差劲,甚至比一般的Blit模式绘制动画性能要好一些。

(具体数据待更新)

 

将MovieClip动画输出为Sprite序列

在有复杂嵌套的动画中,可以考虑直接使用CS6 导出 Sprite序列,在游戏内部来实现Blit模式动画。

有些小技巧,嵌套动画需要以“图形”方式渲染,才能在Sprite序列中看到效果。

Sprite序列导出的位图尺寸尽可能的小,选择合适的导出选项。

clip_image002

不建议超过2048×2048,iPad1和iPod Touch4会因为内存问题,导致Crash。

 

动画极限性能方案

预先将动画的每帧位图展开,保存在动画帧为单位的数组中,监听EnterFrame来更新显示。

 

震动模式游戏静音

clip_image003

 

保持游戏中界面常亮

clip_image004

 

开启自动旋转

clip_image005

如果是横屏游戏,丢弃内建竖屏转向处理。

clip_image006

clip_image007

 

使用StageWebView

对与文字内容的初始大小,需要在内容HTML中设定meta标签。

clip_image008

 

使用StageVideo

在游戏启动Intro视频时我们使用StageVideo来播放,但在开发机ADL中并不存在这个组件。开发机中测试逻辑可以选择Video组件来测试,API基本保持一直。

注意:StageVideo是整个可见对象的最下面,界面上的背景也会遮住他。

对于播放的视屏格式可能存在问题,可以选择

clip_image009

对视频进行一次重编码。

 

使用StageText

对于要求特定输入软键盘时,需要使用StageText这类系统输入框。

注意:StageText呈现在所有显示对象最上层。

下列代码为指定确认按钮文字,以及软键盘为数字类型。

clip_image010

 

禁用内建的键盘行为

clip_image011

 

软键盘触发的相关事件

SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE

SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE

 

获取软键盘的显示区域

stage.softKeyboardRect

 

使用原生的Alert提示

由于使用到原生的StageText,在显示对象最上层,提示框只能使用原生控件进行遮挡。

选择一款ANE扩展

clip_image012

 

其他总结

内存方面也未出现明显问题,确保好SWF没有出现内存泄漏就好。

在定位一些和设备相关的特性问题时,可以选择WIFI无线连接进行断点调试。

在有丰富Flash资源(AS3)的情况下,将程序移植到iOS相当的容易。跨平台优势凸出。

最新的AIR开发环境支持原生的iPhone模拟器,开发起来会更加方便,前提是需要Mac OS X操作系统。

Flash开发iOS程序和游戏趋于成熟,从SWF转成原生的iOS原生程序,未发现明显的转换过程导致的兼容性缺陷,整体顺利。