About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Jan

    17

    实测在苹果公司的 iOS 系统的 iPhone 、iPad 、iPod 等移动设备的中,在对相同的 touchPointID 的多个事件对象进行处理时,当手指轻触屏幕单击的时候 touchBegin,touchEnd 是非常精确的,并不会有任何 touchMove 事件产生。

    在安卓设备生产商太过鱼龙混杂了,会发现很多品牌的手机设备触屏精度并不准确:手指单击屏幕时,往往会产生 touchMove 事件,导致 touchEnd 事件和 touchBegin 事件的 stageX 与 stageY 属性值总是会相差那么一点,好一些的是 0.5 - 3;差一些的低端安卓机在3-7(既便是大生产商也存在这个问题,比如三星、索尼、联想等生产的中低端机,其它小生产厂商更是严重)

    如果需要开发一个精度相当高的应用,那么就不得不使用一些技巧。比如通过一个临时的 Point 变量来保存 touchBegin 的 stageX 与 stageY 的值。然后将 touchEnd 与 touchBegin 事件对象的 stageX 与 stageY 进行比较(可以使用一个精度阈值约为10)后再处理具体的业务逻辑,但这有可能让开发者多写上十几行、甚至几十行代码进行蛋疼的调试和优化。

    精度不准确时不仅会影响到基于精度的 APP 开发,而且还会产生其它问题。比如还会影响到基于速率的 APP开发,一个瞬间的抖动会产生一个较大的瞬间加速度值,甚至是一个逆向的加速度值。所以搞安卓应用和游戏开发者们如果涉及到屏幕精度的开发,那么就不得不极其小心的进行多种设备的测试。

    不得不为 Apple 公司垄断性的生产硬件赞一个。如果每一家公司的硬件都像苹果公司那么优秀,那么开发者会省很多事。苹果的 APP 总是设计的那么高效和优秀,这不仅仅是严格的审核机制和 iOS 系统带来的,跟它的硬件设备也有着非常大的关系。

    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 !