//检查是否有重力加速计
if( 'accelerometer' in cc.sys.capabilities ) {
//设置加速器灵敏度 每秒30次
cc.inputManager.setAccelerometerInterval(1/30);
cc.inputManager.setAccelerometerEnabled(true);
//添加时间监听
cc.eventManager.addListener({
event: cc.EventListener.ACCELERATION, //加速计事件
callback: function(accelEvent, event){
var target = event.getCurrentTarget();
cc.log('Accel x: '+ accelEvent.x + ' y:' + accelEvent.y + ' z:' + accelEvent.z + ' time:' + accelEvent.timestamp );
var w = GC.w;
var h = GC.h;
var ys = accelEvent.x;
var xs = accelEvent.y;
var x = w * accelEvent.x + w/2;
var y = h * accelEvent.y+ h/2;
// Low pass filter
x = x*0.2 + target.prevX*0.8;
y = y*0.2 + target.prevY*0.8;
target.prevX = x;
target.prevY = y;
target.sprite.x = x;
target.sprite.y = y ;
}
}, this);
```
这是在实例里面搬过来的代码,上面说给出 XYZ 三个值,问下 各位大神 怎么通过加速计 算出手机晃动的次数
小弟感激不尽
XYZ分别是3个方向, 你是要判断哪个方向的摇晃次数就 吧他的改变次数累加起来就行了.
比如,你判断x轴方向的摇晃次数
在每一次加速计回调callback里面 计算方向direction = currentX-prevX>0?right:left
然后判断这一次的direction和上一次的是否相同, 不相同就++
by the way, 加速计我没有用过,不知是否可行.仅供参考.请自行测试可行性