Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Side by Side Diff: chrome/renderer/resources/offline.js

Issue 601523003: Network error interstitial bug fixes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix blue button flash when page loads Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/renderer/resources/neterror.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 (function() { 4 (function() {
5 'use strict'; 5 'use strict';
6 /** 6 /**
7 * T-Rex runner. 7 * T-Rex runner.
8 * @param {string} outerContainerId Outer containing element id. 8 * @param {string} outerContainerId Outer containing element id.
9 * @param {object} opt_config 9 * @param {object} opt_config
10 * @constructor 10 * @constructor
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 48
49 this.resizeTimerId_ = null; 49 this.resizeTimerId_ = null;
50 50
51 this.playCount = 0; 51 this.playCount = 0;
52 52
53 // Sound FX. 53 // Sound FX.
54 this.audioBuffer = null; 54 this.audioBuffer = null;
55 this.soundFx = {}; 55 this.soundFx = {};
56 56
57 // Global web audio context for playing sounds. 57 // Global web audio context for playing sounds.
58 this.audioContext = new AudioContext(); 58 this.audioContext = null;
59 59
60 // Images. 60 // Images.
61 this.images = {}; 61 this.images = {};
62 this.imagesLoaded = 0; 62 this.imagesLoaded = 0;
63 this.loadImages(); 63 this.loadImages();
64 } 64 }
65 window['Runner'] = Runner; 65 window['Runner'] = Runner;
66 66
67 67
68 /** 68 /**
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 var imgSource = imageSources[i]; 243 var imgSource = imageSources[i];
244 this.images[imgSource.name] = document.getElementById(imgSource.id); 244 this.images[imgSource.name] = document.getElementById(imgSource.id);
245 } 245 }
246 this.init(); 246 this.init();
247 }, 247 },
248 248
249 /** 249 /**
250 * Load and decode base 64 encoded sounds. 250 * Load and decode base 64 encoded sounds.
251 */ 251 */
252 loadSounds: function() { 252 loadSounds: function() {
253 this.audioContext = new AudioContext();
253 var resourceTemplate = 254 var resourceTemplate =
254 document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content; 255 document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content;
255 256
256 for (var sound in Runner.sounds) { 257 for (var sound in Runner.sounds) {
257 var soundSrc = resourceTemplate.getElementById(Runner.sounds[sound]).src; 258 var soundSrc = resourceTemplate.getElementById(Runner.sounds[sound]).src;
258 soundSrc = soundSrc.substr(soundSrc.indexOf(',') + 1); 259 soundSrc = soundSrc.substr(soundSrc.indexOf(',') + 1);
259 var buffer = decodeBase64ToArrayBuffer(soundSrc); 260 var buffer = decodeBase64ToArrayBuffer(soundSrc);
260 261
261 // Async, so no guarantee of order in array. 262 // Async, so no guarantee of order in array.
262 this.audioContext.decodeAudioData(buffer, function(index, audioData) { 263 this.audioContext.decodeAudioData(buffer, function(index, audioData) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 this.tRex = new Trex(this.canvas, this.images.TREX); 318 this.tRex = new Trex(this.canvas, this.images.TREX);
318 319
319 this.outerContainerEl.appendChild(this.containerEl); 320 this.outerContainerEl.appendChild(this.containerEl);
320 321
321 if (IS_MOBILE) { 322 if (IS_MOBILE) {
322 this.createTouchController(); 323 this.createTouchController();
323 } 324 }
324 325
325 this.startListening(); 326 this.startListening();
326 this.update(); 327 this.update();
327 this.loadSounds();
328 328
329 window.addEventListener(Runner.events.RESIZE, 329 window.addEventListener(Runner.events.RESIZE,
330 this.debounceResize.bind(this), false); 330 this.debounceResize.bind(this));
331 }, 331 },
332 332
333 /** 333 /**
334 * Create the touch controller. A div that covers whole screen. 334 * Create the touch controller. A div that covers whole screen.
335 */ 335 */
336 createTouchController: function() { 336 createTouchController: function() {
337 this.touchController = document.createElement('div'); 337 this.touchController = document.createElement('div');
338 this.touchController.className = Runner.classes.TOUCH_CONTROLLER; 338 this.touchController.className = Runner.classes.TOUCH_CONTROLLER;
339 }, 339 },
340 340
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 */ 429 */
430 startGame: function() { 430 startGame: function() {
431 this.runningTime = 0; 431 this.runningTime = 0;
432 this.playingIntro = false; 432 this.playingIntro = false;
433 this.tRex.playingIntro = false; 433 this.tRex.playingIntro = false;
434 this.containerEl.style.webkitAnimation = ''; 434 this.containerEl.style.webkitAnimation = '';
435 this.playCount++; 435 this.playCount++;
436 436
437 // Handle tabbing off the page. Pause the current game. 437 // Handle tabbing off the page. Pause the current game.
438 window.addEventListener(Runner.events.VISIBILITY, 438 window.addEventListener(Runner.events.VISIBILITY,
439 this.onVisibilityChange.bind(this), false); 439 this.onVisibilityChange.bind(this));
440 440
441 window.addEventListener(Runner.events.BLUR, 441 window.addEventListener(Runner.events.BLUR,
442 this.onVisibilityChange.bind(this), false); 442 this.onVisibilityChange.bind(this));
443 443
444 window.addEventListener(Runner.events.FOCUS, 444 window.addEventListener(Runner.events.FOCUS,
445 this.onVisibilityChange.bind(this), false); 445 this.onVisibilityChange.bind(this));
446 }, 446 },
447 447
448 clearCanvas: function() { 448 clearCanvas: function() {
449 this.canvasCtx.clearRect(0, 0, this.dimensions.WIDTH, 449 this.canvasCtx.clearRect(0, 0, this.dimensions.WIDTH,
450 this.dimensions.HEIGHT); 450 this.dimensions.HEIGHT);
451 }, 451 },
452 452
453 /** 453 /**
454 * Update the game frame. 454 * Update the game frame.
455 */ 455 */
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 }, 574 },
575 575
576 /** 576 /**
577 * Process keydown. 577 * Process keydown.
578 * @param {Event} e 578 * @param {Event} e
579 */ 579 */
580 onKeyDown: function(e) { 580 onKeyDown: function(e) {
581 if (!this.crashed && (Runner.keycodes.JUMP[String(e.keyCode)] || 581 if (!this.crashed && (Runner.keycodes.JUMP[String(e.keyCode)] ||
582 e.type == Runner.events.TOUCHSTART)) { 582 e.type == Runner.events.TOUCHSTART)) {
583 if (!this.activated) { 583 if (!this.activated) {
584 this.loadSounds();
584 this.activated = true; 585 this.activated = true;
585 } 586 }
586 587
587 if (!this.tRex.jumping) { 588 if (!this.tRex.jumping) {
588 this.playSound(this.soundFx.BUTTON_PRESS); 589 this.playSound(this.soundFx.BUTTON_PRESS);
589 this.tRex.startJump(); 590 this.tRex.startJump();
590 } 591 }
591 } 592 }
592 593
593 if (this.crashed && e.type == Runner.events.TOUCHSTART && 594 if (this.crashed && e.type == Runner.events.TOUCHSTART &&
(...skipping 1631 matching lines...) Expand 10 before | Expand all | Expand 10 after
2225 2226
2226 /** 2227 /**
2227 * Add a new cloud to the horizon. 2228 * Add a new cloud to the horizon.
2228 */ 2229 */
2229 addCloud: function() { 2230 addCloud: function() {
2230 this.clouds.push(new Cloud(this.canvas, this.cloudImg, 2231 this.clouds.push(new Cloud(this.canvas, this.cloudImg,
2231 this.dimensions.WIDTH)); 2232 this.dimensions.WIDTH));
2232 } 2233 }
2233 }; 2234 };
2234 })(); 2235 })();
OLDNEW
« no previous file with comments | « chrome/renderer/resources/neterror.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698