2013年9月9日月曜日

シェイク

accelerometerEnabled設定


[self setAccelerometerEnabled:YES];


accelerometerメソッド追加


- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    if (abs(acceleration.x-oldX) > 0.7 || abs(acceleration.y - oldY) > 0.7) {
        NSLog(@"shake!!!");
        
    }
    oldX = acceleration.x;
    oldY = acceleration.y;
}
※oldX,oldYはインスタンス変数
だが、このやり方では一回のシェイクで何度もログが表示される


accelerometerEnabled編集


- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    float THRSHOLD = 2.0;
    if (acceleration.x > THRSHOLD || acceleration.x < -THRSHOLD || acceleration.y > THRSHOLD || acceleration.y < -THRSHOLD || acceleration.z > THRSHOLD || acceleration.z < -THRSHOLD ) {
        if (!shakedOnce) {
            shakedOnce = YES;
            NSLog(@"shake!!!");
        } else {
            shakedOnce = NO;
        }
    }
}

※shakedOnceはインスタンス変数
こうすれば何度も呼ばれることは少なくなる


0 件のコメント:

コメントを投稿