Cocos2d-JS (3.0) 如何读取陀螺仪数据??

翻遍了各种中英文文档,也没发现如何获取陀螺仪的数据,只找到了获取加速度计的数据方式为:

cc.eventManager.addListener({
  event: cc.EventListener.ACCELERATION,
  callback: function (acc, event) { }
});


```


但是陀螺仪(gyroscope)的三个方向轴(alpha, beta, gamma)并没有在这里体现。


虽然网页版游戏的陀螺仪数据我也可以通过window.ondeviceorientation对象来获取,但是ios/android版本也不能这么干啊。

有人知道吗?或者我是不是应该去github上问啊。。。

这个不是cocos2d做的事的。html5本身是支持的,你去搜一下就知道了!

我知道HTML5本身的支持的,我有长期做web相关的开发,特别是手机端,经常在网页中整合需要陀螺仪数据的应用。也熟悉window.ondeviceorientation接口。
但是这个接口只在web端有效,依托于浏览器的window对象。如果我通过cocos2d-JS的API试图结合cocos2d-JSB将作品编译成ios原生应用,这个接口是肯定会失效的。

所以我的问题就是cc中的eventManager或者其它接口有无更高层的抽象出一个web端和原生APP端公用的陀螺仪接口。

没人理。。。。。。。。。。。

        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 = winSize.width;
                var h = winSize.height;

                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);

这个是官方的例子.

非常感谢回复。

我看过官方的例子。事实上我在主楼的帖子里所贴的代码就是官方例子的简单示意。但问题在于这个只是ACCELERATION加速度计的数据。而不是GYROSCOPE陀螺仪的数据。

我最近再做一个游戏需要陀螺仪中gamma轴的数据,所以想研究一下cocos2d有没有提供高层的接口。

不管怎么样还是感谢你的回复。这个论坛貌似真正懂cocos2d的人不怎么用。。。

高手的时间都很宝贵的,不会像我这种小白没事逛论坛的:11:
官方的例子里面用了xyz可能就对应你的alpha,beta,gamma轴吧.
然后你再仔细看看,他例子里面还有一个时间轴,
而且在最开始的地方设置了时间间隔1/30,也就是没0.5秒调用一次回调.
然后估计你可以通过他的时间戳accelEvent.timestamp 来判断他的
这一次状态和上一次状态的偏差,从而判断方向.