陀螺儀和方向感應器iPhone、iPad和iPodTouch最酷的一項功能是它們的內建方向感應器,這個微小的裝置可以讓iOS知道裝置被持握的方式以及是否在移動。iOS可使用方向感應器來處理自動旋轉,而許多遊戲也都使用它做為控制機制。此外它也可以用來偵測搖晃與突然的移動。17-1方向感應器的物理原理方向感應器(accelerometer)是藉由感應某個方向的慣性力大小來衡量其加速度與重力。iOS裝置內的方向感應器是一個三軸的方向感應器,表示它可以偵測三度空間中的移動或重力。因此讀者可以利用方向感應器得知裝置目前被握持的方式(像是自動旋轉功能),也可以得知它是否是平放在桌上,甚至可以知道是正面朝上還是正面朝下。方向感應器的度量單位為g力(g表示重力),所以當方向感應器傳回1.0的值時表示它在某個特定方向感應到了1g的力。底下有三個例子:�如果裝置拿在手上沒有移動,由於地心引力的關係,大約會有1g的作用力在它上面。�如果裝置是以直向且完全垂直的方式持握時,它會偵測並報告有1g的作用力在y軸上。�如果裝置是以某個角度持握時,則1g的力便會根據持握的方式而分散到不同的軸。當以45度角持握時,這1g的力會大約均分到兩個軸上。570突然的移動則可以藉由檢查方向感應器的值是否比1g大很多來偵測。在正常的使用情況下,方向感應器在任何軸上所偵測到的都不會超過1g太多。但如果讀者搖晃、掉落或丟擲裝置,則方向感應器會在一個以上的軸上偵測到非常大的受力。不過請不要掉落或丟擲讀者自己的iOS裝置來測試這個理論。圖17-1以圖形表示方向感應器所使用的三個軸。請注意方向感應器使用的是較標準的y軸座標習慣用法,也就是y值增加表示向上的力,這剛好和第十四章中Quartz2D的座標系統相反。當讀者使用方向感應器搭配Quartz2D做為控制機制時,需要轉換y軸座標。但當搭配OpenGLES時(比較可能發生在讀者使用方向感應器來控制動畫時),就不需要轉換。圖17-1:iPhone方向感應器的三維座標軸左邊的iPhone4前視圖顯示了x和y軸。右邊的iPhone4側視圖則顯示了z軸。陀螺儀和方向感應器57117-2不要忘記旋轉我們之前提過iPhone4還有個陀螺儀感應器,可讓讀者讀取描述裝置繞著軸旋轉的值。如果此感應器和方向感應器之間的差異看起來不清楚的話,請想想平放在桌上的iPhone。假如讀者在該手機平放時開始旋轉它,方向感應器的值不會改變。這是因為移動手機的力量(在這裡只有沿著z軸向下拉的重力)並沒有改變。(實際上的情形則有一點點的不同,因為讀者手...