About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Jan

    16

    从 Starling 开始。

    如果 Flash 平台开发者已经使用过 Starling 这个框架,那么一定知道 Starling 对象中有一个 simulateMultitouch 属性,这个用属性可以使用鼠标模拟手指的触屏功能,但它 仅限于 Starling 框架的对象(Starling 框架是由 Adobe 提供的游戏开发框架的一部份,主要是为移动游戏开发时提供硬件加速功能)。Starling 有一个性能瓶颈问题,即:运行时不能频繁的向 GPU 提交位图,否则将会导致严重的性能问题,所以一般在游戏的开发过程中,每个场景往往是一次性向 GPU 提交一个位图序列集合(Sprite atlas,或sprite sheet)。

    一次性向 GPU 提交位图序列集合是有非常大的限制的:位图序列集合文件不能过大,否则向 GPU 提交以及 GPU 解码的时间会非常长,所以只适合提交游戏资源类的位图序列集合。比如一张场景图,和一系列的人物的动作、以及表情和装备等低精度的、小尺寸的位图序列集合。然而如果开发的是一个应用,需要有 A4 纸大小的照片级高精度图片 500 张(或 500 张照片本身是运行时动态加载的外部文件),那么就完完全全不能使用这种方法。并且由于不能频繁的在运行时动态的向 GPU 提交这 500 张位图资源,所以唯一的方法就是使用传统的显示列表对象进行开发(因为每次向 GPU 提交位图需要花很长时间,并且需要解码以及生成2的倍比的多个尺寸的映射图)。

    回到传统显示列表对象。

    利用传统显示对象进行移动开发应用的时候,在使用 TouchEvent 时候,舞台对象没有提供任何类似 simulateMultitouch 属性允许我们进行触屏模拟。万幸的是在 Flash Professional 工具中除了提供 AIR 模似器之外,还提供了一个功能十分强大的物理真机模似器(Simulator)。物理真机模似器除了提供鼠标模拟触屏功能外(允许多个点),还能旋转、重力加速、地理位置等多个功能的模似(这比 Starling 提供的 simulateMultitouch 属性实在强太多了)。

    然而,默认情况下,使用 Flex 工具进行开发的用户,只有 AIR 模似器,并没有物理真机模似器(至少现在的 4.6 / 4.7版本都没有),如果每一次需要编译后发布到真机环境上去调试 / 测试 TouchEvent  事件的话,那么是非常麻烦的。不要举丧,Adobe 产品最大的特色就是支持“软件接力”(当然开发者也可以直接使用“动态加载”的方式在物理真机模似器中进行调试),所以 Flex 的开发者在进行移动应用类开发时并不需要每一次都发布到真机环境中去调试触屏、重力加速、地理位置等功能。Nice !