ios中加速器和重力感应器 ios重力感应游戏
#import
@interface ViewController : UIViewController{
CMMotionManager *_manager;
NSTimer*_timer;
}
//动作管理器指针
@property(nonatomic,retain)CMMotionManager *manager;
@property (retain, nonatomic) IBOutlet UILabel*accelerometerLabel;
@property (retain, nonatomic) IBOutlet UILabel*gyroscopeLabel;
@property(nonatomic,retain)NSTimer *timer;
@end
//
self.manager = [[CMMotionManager alloc]init];
//添加一个队列线程
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//判断是否可以加速
if(_manager.accelerometerAvailable == YES) {
//更新速度
_manager.accelerometerUpdateInterval = 0.1;
//block
[_manager startAccelerometerUpdatesToQueue:queuewithHandler:^(CMAccelerometerData *accelerometerData, NSError*error) {
NSString *acceleterString;
if (error) {
[_manager stopAccelerometerUpdates];
acceleterString = [NSStringstringWithFormat:@"acceletererror:%@",error];
}else{
//重力加速度三维分量
acceleterString = [NSStringstringWithFormat:@"%fn,%fn,%fn",accelerometerData.acceleration.x,accelerometerData.acceleration.y,accelerometerData.acceleration.z];
//跳转到主线程
[self.accelerometerLabelperformSelectorOnMainThread:@selector(setText:)withObject:acceleterString waitUntilDone:NO];
}
}];
}else{
self.accelerometerLabel.text = @"设备没有加速器";
}
//重力感应
if(_manager.gyroAvailable == YES) {
_manager.gyroUpdateInterval = 1.0;
[_manager startGyroUpdatesToQueue:queue withHandler:^(CMGyroData*gyroData, NSError *error) {
NSString *gryString;
if (error) {
//停止重力感应更新
[_manager stopGyroUpdates];
gryString = [NSString stringWithFormat:@"gryerror:%@",error];
}else{
gryString = [NSStringstringWithFormat:@"%fn,%fn,%fn",gyroData.rotationRate.x,gyroData.rotationRate.y,gyroData.rotationRate.z];
[self.gyroscopeLabelperformSelectorOnMainThread:@selector(setText:)withObject:gryString waitUntilDone:NO];
}
}];
}
//方法2
self.manager = [[CMMotionManager alloc] init];
if(_manager.accelerometerAvailable == YES) {
_manager.accelerometerUpdateInterval = 1.0;
[_manager startAccelerometerUpdates];
}else{
self.accelerometerLabel.text = @"设备不支持加速计";
}
if(_manager.gyroAvailable == YES) {
_manager.gyroUpdateInterval = 2.0;
[_manager startGyroUpdates];
}else{
self.gyroscopeLabel.text = @"设备不支持重力感应";
}
//在viewWillAppear里设定一个定时器用于更新
- (void)viewWillAppear:(BOOL)animated{
[superviewWillAppear:animated];
self.timer =[NSTimer scheduledTimerWithTimeInterval:1.0f target:selfselector:@selector(updateDisPlay) userInfo:nil repeats:YES];
}
- (void)updateDisPlay{
if(_manager.accelerometerAvailable == YES) {
CMAccelerometerData *accelerometerData =_manager.accelerometerData;
//重力加速度三维分量
self.accelerometerLabel.text = [NSStringstringWithFormat:@"%fn,%fn,%fn",accelerometerData.acceleration.x,accelerometerData.acceleration.y,accelerometerData.acceleration.z];
}
//是否有重力感应
if(_manager.gyroAvailable == YES) {
CMGyroData *gyroData = _manager.gyroData;
self.gyroscopeLabel.text = [NSStringstringWithFormat:@"%fn,%fn,%fn",gyroData.rotationRate.x,gyroData.rotationRate.y,gyroData.rotationRate.z];
}
}
更多阅读
教你如何修改删除淘宝中评和差评 淘宝差评修改
教你如何修改删除淘宝中评和差评——简介很多时候,买家在给中评的时候,特别是新手买家,他们在给中评的时候,以为不扣分,宝贝确实一般,觉得中评应该没什么,但是他们不知道一个中评,对一个卖家来说有多重要,虽然中评不扣分,但是会直接的影响到卖
Excel中sumif和sumifs函数进行条件求和的用法 sumifs多个条件求和
Excel中sumif和sumifs函数进行条件求和的用法——简介sumif和sumifs函数是Excel2007版本以后新增的函数,功能十分强大,实用性很强,本文介绍下Excel中通过用sumif和sumifs函数的条件求和应用,并对函数进行解释,希望大家能够掌握使用技巧。
如何在VB 6.0中添加和使用CommonDialog 控件? vb6.0控件下载
如何在VB 6.0中添加和使用CommonDialog 控件?——简介CommonDialog 控件可以提供标准的打开、另存、选择颜色、字体、设置打印选项等对话框。在VB 6.0中可以按照以下的步骤添加、使用CommonDialog。如何在VB 6.0中添加和使用CommonD
祈和打蛋器试用报告之和面篇——好吃得停不了口的韩国小馒头 祈和电动打蛋器
祈和打蛋器试用报告之和面篇——好吃得停不了口的韩国小馒头——简介之前做过几回面包,后来实在是怯于揉面的痛苦折磨,再不想尝试手工揉面做面包了。收到这款祈和打蛋器后看说明上说可以用来做面包,抱着半信半疑的态度昨天在家里整了这
matlab中fprintf和disp的用法 matlab disp fprintf
matlab中fprintf 和disp的用法>> disp('pi=',pi)??? Error using==> dispToo many inputarguments.>> disp(sprintf('圆周率pi= %8.5f',pi))