[一位菜鸟的COCOS-2D编程之路]COCOS2D中的加速计(UIAccelerometer)的使用初步

加速计(UIAccelerometer),简单的说,就是获取手机的重力感应和位移判断和处理。比如上下晃动手机,就会触发加速计事件。今天我们就来学习下加速计的使用初步。

1.代码。加速计的实现很简单,只要实现代理中得唯一的一个方法即可。

UIAccelerometerDelegate 


代理方法是

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration NS_DEPRECATED_IOS(2_0, 5_0)

acceleration  封装了加速计的xyz坐标,我们可以根据xyz的变化对我们的精灵进行操作


1—)method1 最简单的赋值

   UIAccelerationValue x,y,z;
    
    x = acceleration.x;
    y = acceleration.y;
    z = acceleration.z;

我们可以根据得到的xyz值,进行相应的处理。但是这个xyz值包含了重力,我们的加速事件。后面进行解析


2)获得受重力影响的部分。使用低通滤波算法

//#define kAccelerometerFrequency 50.0
//    
//#define kFilteringFactor 0.1
    //使用低通滤波算法 得到受重力影响的部分
    UIAccelerationValue accleX,accleY,accleZ;
    
    accleX = (acceleration.x *kFilteringFactor) + (accleX * (1.0 - kFilteringFactor));
    
      accleY = (acceleration.y *kFilteringFactor) + (accleY * (1.0 - kFilteringFactor));
      accleZ = (acceleration.z *kFilteringFactor) + (accleZ * (1.0 - kFilteringFactor));

3)从x中去除掉 受重力影响的部分,获得最终的xyz的加速计的影响量

 //将低通数据从当前数值中过滤掉,以获取简化之后的高通数据
    UIAccelerationValue haccleX,haccleY,haccleZ;
    
    haccleX = x - accleX;
    haccleY = y - accleY;
    haccleZ = z - accleZ;
    
    //使用自己的方法来处理数据
    
    self.isTouchEnabled = YES;

一定要注意的是:我们要设置触摸响应。


    self.isTouchEnabled = YES;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值