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 系统带来的,跟它的硬件设备也有着非常大的关系。