Index: chrome/renderer/resources/offline.js |
diff --git a/chrome/renderer/resources/offline.js b/chrome/renderer/resources/offline.js |
index d0f60c9f9626c90c62927c2694870affd9c40ab0..27f9d80847abfe283f635e5c5c60e2ada204da94 100644 |
--- a/chrome/renderer/resources/offline.js |
+++ b/chrome/renderer/resources/offline.js |
@@ -87,6 +87,8 @@ var IS_MOBILE = window.navigator.userAgent.indexOf('Mobi') > -1; |
/** @const */ |
var IS_TOUCH_ENABLED = 'ontouchstart' in window; |
+/** @const */ |
+var IS_IOS = window.navigator.userAgent.indexOf('CriOS') > -1; |
/** |
* Default game configuration. |
@@ -251,19 +253,22 @@ Runner.prototype = { |
* Load and decode base 64 encoded sounds. |
*/ |
loadSounds: function() { |
- this.audioContext = new AudioContext(); |
- var resourceTemplate = |
- document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content; |
- |
- for (var sound in Runner.sounds) { |
- var soundSrc = resourceTemplate.getElementById(Runner.sounds[sound]).src; |
- soundSrc = soundSrc.substr(soundSrc.indexOf(',') + 1); |
- var buffer = decodeBase64ToArrayBuffer(soundSrc); |
- |
- // Async, so no guarantee of order in array. |
- this.audioContext.decodeAudioData(buffer, function(index, audioData) { |
- this.soundFx[index] = audioData; |
- }.bind(this, sound)); |
+ if (!IS_IOS) { |
+ this.audioContext = new AudioContext(); |
+ var resourceTemplate = |
+ document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content; |
+ |
+ for (var sound in Runner.sounds) { |
+ var soundSrc = |
+ resourceTemplate.getElementById(Runner.sounds[sound]).src; |
+ soundSrc = soundSrc.substr(soundSrc.indexOf(',') + 1); |
+ var buffer = decodeBase64ToArrayBuffer(soundSrc); |
+ |
+ // Async, so no guarantee of order in array. |
+ this.audioContext.decodeAudioData(buffer, function(index, audioData) { |
+ this.soundFx[index] = audioData; |
+ }.bind(this, sound)); |
+ } |
} |
}, |
@@ -457,7 +462,7 @@ Runner.prototype = { |
update: function() { |
this.drawPending = false; |
- var now = performance.now(); |
+ var now = getTimeStamp(); |
var deltaTime = now - (this.time || now); |
this.time = now; |
@@ -623,7 +628,7 @@ Runner.prototype = { |
this.tRex.speedDrop = false; |
} else if (this.crashed) { |
// Check that enough time has elapsed before allowing jump key to restart. |
- var deltaTime = performance.now() - this.time; |
+ var deltaTime = getTimeStamp() - this.time; |
if (Runner.keycodes.RESTART[keyCode] || |
(e.type == Runner.events.MOUSEUP && e.target == this.canvas) || |
@@ -683,7 +688,7 @@ Runner.prototype = { |
} |
// Reset the time clock. |
- this.time = performance.now(); |
+ this.time = getTimeStamp(); |
}, |
stop: function() { |
@@ -698,7 +703,7 @@ Runner.prototype = { |
this.activated = true; |
this.paused = false; |
this.tRex.update(0, Trex.status.RUNNING); |
- this.time = performance.now(); |
+ this.time = getTimeStamp(); |
this.update(); |
} |
}, |
@@ -712,7 +717,7 @@ Runner.prototype = { |
this.distanceRan = 0; |
this.setSpeed(this.config.SPEED); |
- this.time = performance.now(); |
+ this.time = getTimeStamp(); |
this.containerEl.classList.remove(Runner.classes.CRASHED); |
this.clearCanvas(); |
this.distanceMeter.reset(this.highestScore); |
@@ -808,8 +813,8 @@ function getRandomNum(min, max) { |
* @param {number} duration Duration of the vibration in milliseconds. |
*/ |
function vibrate(duration) { |
- if (IS_MOBILE) { |
- window.navigator['vibrate'](duration); |
+ if (IS_MOBILE && window.navigator.vibrate) { |
+ window.navigator.vibrate(duration); |
} |
} |
@@ -851,6 +856,15 @@ function decodeBase64ToArrayBuffer(base64String) { |
} |
+/** |
+ * Return the current timestamp. |
+ * @return {number} |
+ */ |
+function getTimeStamp() { |
+ return IS_IOS ? new Date().getTime() : performance.now(); |
+} |
+ |
+ |
//****************************************************************************** |
@@ -1424,7 +1438,7 @@ Trex.prototype = { |
this.currentAnimFrames = Trex.animFrames[opt_status].frames; |
if (opt_status == Trex.status.WAITING) { |
- this.animStartTime = performance.now(); |
+ this.animStartTime = getTimeStamp(); |
this.setBlinkDelay(); |
} |
} |
@@ -1436,7 +1450,7 @@ Trex.prototype = { |
} |
if (this.status == Trex.status.WAITING) { |
- this.blink(performance.now()); |
+ this.blink(getTimeStamp()); |
} else { |
this.draw(this.currentAnimFrames[this.currentFrame], 0); |
} |