Skip to content

Commit f96d4bb

Browse files
committed
Merge pull request cocos2d#1048 from ShengxiangChen/issue2459_accelerometerBug
fixed cocos2d#2459: fix Accelerometer bug on UCWeb version 9.0 and below.
2 parents f2d16df + 744e514 commit f96d4bb

File tree

2 files changed

+21
-23
lines changed

2 files changed

+21
-23
lines changed

cocos2d/layers_scenes_transitions_nodes/CCLayer.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,12 @@ cc.Layer = cc.Node.extend(/** @lends cc.Layer# */{
222222
*/
223223
setAccelerometerInterval:function (interval) {
224224
if (this._isAccelerometerEnabled) {
225-
if (this._running) {
226-
var director = cc.Director.getInstance();
227-
director.getAccelerometer().setAccelerometerInterval(interval);
228-
}
225+
cc.Director.getInstance().getAccelerometer().setAccelerometerInterval(interval);
229226
}
230227
},
231228

232229
onAccelerometer:function (accelerationValue) {
233-
//Layer#onAccelerometer override me
230+
cc.Assert(false, "Layer#onAccelerometer override me");
234231
},
235232

236233
/**

cocos2d/platform/CCAccelerometer.js

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ cc.Acceleration = function (x, y, z, timestamp) {
4747
* @extends cc.Class
4848
*/
4949
cc.Accelerometer = cc.Class.extend(/** @lends cc.Accelerometer# */{
50-
setDelegate:function (delegate) {
50+
setDelegate: function (delegate) {
5151
cc.AccelerometerDispatcher.getInstance().addDelegate(delegate);
5252
},
53-
setAccelerometerInterval:function (interval) {
53+
setAccelerometerInterval: function (interval) {
5454
cc.AccelerometerDispatcher.getInstance().setAccelerometerInterval(interval);
5555
}
5656
});
@@ -63,31 +63,31 @@ cc.Accelerometer = cc.Class.extend(/** @lends cc.Accelerometer# */{
6363
* @extends cc.Class
6464
*/
6565
cc.AccelerometerDispatcher = cc.Class.extend(/** @lends cc.AccelerometerDispatcher# */{
66-
_delegate:null,
67-
_acceleration:null,
68-
_deviceEvent:null,
69-
//_orientation:0,
70-
_interval:0.1,
71-
_minus:1,
72-
init:function () {
66+
_delegate: null,
67+
_acceleration: null,
68+
_deviceEvent: null,
69+
_interval: 0,
70+
_minus: 1,
71+
init: function () {
7372
this._acceleration = new cc.Acceleration();
7473
this._deviceEvent = window.DeviceMotionEvent || window.DeviceOrientationEvent;
7574
var ua = navigator.userAgent;
76-
if(/Android/.test(ua)){
75+
if (/Android/.test(ua) || (/Adr/.test(ua) && cc.Browser.type == "ucbrowser")) {
7776
this._minus = -1;
7877
}
78+
7979
//TODO fix DeviceMotionEvent bug on QQ Browser version 4.1 and below.
80-
/*if(ua.indexOf("qqbrowser")){
80+
if (cc.Browser.type == "mqqbrowser") {
8181
this._deviceEvent = window.DeviceOrientationEvent;
82-
}*/
82+
}
8383
return true;
8484
},
8585

86-
getDelegate:function () {
86+
getDelegate: function () {
8787
return this._delegate;
8888
},
8989

90-
addDelegate:function (delegate) {
90+
addDelegate: function (delegate) {
9191
this._delegate = delegate;
9292
var acc = this.didAccelerate.bind(this);
9393

@@ -109,18 +109,20 @@ cc.AccelerometerDispatcher = cc.Class.extend(/** @lends cc.AccelerometerDispatch
109109
}
110110
},
111111

112-
setAccelerometerInterval:function (interval) {
113-
//not available on browser
112+
setAccelerometerInterval: function (interval) {
114113
if (this._interval !== interval) {
115114
this._interval = interval;
116115
}
117116
},
118117

119-
didAccelerate:function (eventData) {
118+
didAccelerate: function (eventData) {
120119
if (!this._delegate) {
121120
return;
122121
}
123122

123+
var now = Date.now();
124+
if ((now - this._acceleration.timestamp) / 1000 < this._interval) return;
125+
124126
if (this._deviceEvent == window.DeviceMotionEvent) {
125127
var acceleration = eventData.accelerationIncludingGravity;
126128
this._acceleration.x = this._minus * acceleration.x * 0.1;
@@ -132,7 +134,6 @@ cc.AccelerometerDispatcher = cc.Class.extend(/** @lends cc.AccelerometerDispatch
132134
this._acceleration.y = -(eventData.beta / 90) * 0.981;
133135
this._acceleration.z = (eventData.alpha / 90) * 0.981;
134136
}
135-
136137
this._acceleration.timestamp = Date.now();
137138

138139
var tmp = this._acceleration.x;

0 commit comments

Comments
 (0)