APP STORE上的很多软件,如打火机啊蜡烛等效果利用的
加速计 或 Shake 摇动侦测 等 开发思路分享:
摇晃前的预设文字:没事
用力摇晃后画面将显示为:摇动
程序代码:
AccelerometerDemoViewController.h
#import
@interface AccelerometerDemoViewController : UIViewController
IBOutlet UILabel *mylabel;
}
@property (nonatomic,retain) UILabel *mylabel;
@end
AccelerometerDemoViewController.m
@implementation AccelerometerDemoViewController
@synthesize mylabel;
– (void)viewDidLoad {
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
accelerometer.delegate = self;
accelerometer.updateInterval = 1.0f/60.0f;
[super viewDidLoad];
}
– (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
static NSInteger shakeCount=0;
static NSDate *shakeStart;
NSDate *now=[[NSDate alloc] init];
// 摇晃 2秒内
NSDate *checkDate=[[NSDate alloc] initWithTimeInterval:2.0f sinceDate:shakeStart];
//超过2秒 重计算晃动次数
if ([now compare:checkDate]==NSOrderedDescending||shakeStart==nil){
shakeCount=0;
[shakeStart release];
shakeStart=[[NSDate alloc] init];
}
[now release];
[checkDate release];
// 三轴摇晃的G力超过2则 列入计次
if (fabsf(acceleration.x)>2.0 || fabsf(acceleration.y)>2.0|| fabsf(acceleration.z)>2.0){
shakeCount++;
//2秒内侦测到4次则判定为Shake摇晃手机
if (shakeCount>4){
shakeCount=0;
[shakeStart release];
shakeStart=[[NSDate alloc] init];
//画面显示摇动文字
mylabel.text=@”地震了”;
//设定2秒后自动还原
[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(cleartext) userInfo:nil repeats:NO];
}
}
}
-(void)cleartext{
mylabel.text=@”没现象”;
}
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!