シェイク(振る)動作を検出

振る動作の検出にはdidAcceleratexを使い、y、zいずれかの方向に一定以上の加速度が検出された場合にシェイクされたものとして処理します。

- (void)viewDidLoad {
	[super viewDidLoad];
 
	UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
	accel.delegate = self;
	accel.updateInterval = 0.5;
}
 
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
	const float violence = 1.5;
	static BOOL beenhere;
	BOOL shake = FALSE;
 
	if (beenhere) return;
	beenhere = TRUE;
	if (acceleration.x > violence || acceleration.x < (-1* violence))
		shake = TRUE;
	if (acceleration.y > violence || acceleration.y < (-1* violence))
		shake = TRUE;
	if (acceleration.z > violence || acceleration.z < (-1* violence))
		shake = TRUE;
	if (shake) { 
           /* シェイク処理を行う */
        }
 
        beenhere = false;
}

外部リンク


Personal Tools