demo.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /* jshint strict: false */
  2. var $body = $('body'),
  3. $characters = $('.characters'),
  4. $posters = $('.characters-poster'),
  5. $names = $('.characters-list a'),
  6. $label = $('.characters-label');
  7. var backgrounds = [
  8. { src: 'img/1.jpg', valign: 'top' },
  9. { src: 'img/2.jpg', valign: 'top' },
  10. { src: 'img/3.jpg', valign: 'top' },
  11. { src: 'img/2.jpg', delay: 6500, video: [
  12. 'img/intro.mp4',
  13. 'img/intro.ogv',
  14. 'img/intro.webm'
  15. ] },
  16. ];
  17. var posters = [
  18. { src: 'img/poster-ja.jpg' },
  19. { src: 'img/poster-mr.jpg' },
  20. { src: 'img/poster-jb.jpg' },
  21. { src: 'img/poster-jg.jpg' },
  22. { src: 'img/poster-eg.jpg' },
  23. { src: 'img/poster-bw.jpg' },
  24. { src: 'img/poster-rd.jpg' },
  25. { src: 'img/poster-pb.jpg' },
  26. { src: 'img/poster-rl.jpg' },
  27. { src: 'img/poster-dh.jpg' },
  28. ];
  29. var backdrops = [
  30. { src: 'img/backdrop-ja.jpg' },
  31. { src: 'img/backdrop-mr.jpg' },
  32. { src: 'img/backdrop-jb.jpg' },
  33. { src: 'img/backdrop-jg.jpg' },
  34. { src: 'img/backdrop-eg.jpg' },
  35. { src: 'img/backdrop-bw.jpg' },
  36. { src: 'img/backdrop-rd.jpg' },
  37. { src: 'img/backdrop-pb.jpg' },
  38. { src: 'img/backdrop-rl.jpg' },
  39. { src: 'img/backdrop-dh.jpg' },
  40. ];
  41. $('html').addClass('animated');
  42. var displayBackdrops = false;
  43. $body.vegas({
  44. preload: true,
  45. overlay: true,
  46. transitionDelay: 4000,
  47. delay: 10000,
  48. slides: backgrounds,
  49. walk: function (nb, settings) {
  50. if (settings.video) {
  51. $('.logo').addClass('collapsed');
  52. } else {
  53. $('.logo').removeClass('collapsed');
  54. }
  55. }
  56. });
  57. $posters.vegas({
  58. preload: true,
  59. transition: 'swirlLeft2',
  60. transitionDelay: 1000,
  61. timer: false,
  62. delay: 5000,
  63. slides: posters,
  64. walk: function (nb) {
  65. $('.characters-list li')
  66. .removeClass('active')
  67. .eq(nb)
  68. .addClass('active');
  69. var name = $names.eq(nb).data('character');
  70. $label
  71. .removeClass('animated');
  72. setTimeout(function () {
  73. $label
  74. .text(name)
  75. .addClass('animated');
  76. }, 250);
  77. if (displayBackdrops === true) {
  78. var backdrop = backdrops[nb];
  79. backdrop.transition = 'zoomOut';
  80. backdrop.transitionDelay = 1000;
  81. $body.vegas('options', 'delay', 1000);
  82. $body.vegas('options', 'slides', [ backdrop ]);
  83. $body.vegas('next');
  84. }
  85. }
  86. })
  87. .on('mouseenter', function () {
  88. displayBackdrops = true;
  89. $posters.vegas('trigger', 'walk');
  90. $posters.vegas('pause');
  91. })
  92. .on('click', debounce(function () {
  93. $posters.vegas('next');
  94. }, 250, true));
  95. $characters
  96. .on('mouseenter', function () {
  97. displayBackdrops = true;
  98. })
  99. .on('mouseleave', function () {
  100. $body.vegas('options', 'slides', backgrounds);
  101. $body.vegas('next');
  102. $body.vegas('options', 'delay', 4000);
  103. displayBackdrops = false;
  104. $posters.vegas('play');
  105. });
  106. $names
  107. .on('mouseenter', debounce(function (e) {
  108. e.preventDefault();
  109. var index = $(this).index('.characters-list a');
  110. $posters
  111. .vegas('jump', index)
  112. .vegas('pause');
  113. }, 250));
  114. // JavaScript Debounce Function
  115. // By David Walsh
  116. // http://davidwalsh.name/javascript-debounce-function
  117. function debounce (func, wait, immediate) {
  118. var timeout;
  119. return function () {
  120. var context = this,
  121. args = arguments,
  122. later = function() {
  123. timeout = null;
  124. if (!immediate) {
  125. func.apply(context, args);
  126. }
  127. },
  128. callNow = immediate && !timeout;
  129. clearTimeout(timeout);
  130. timeout = setTimeout(later, wait || 500);
  131. if (callNow) {
  132. func.apply(context, args);
  133. }
  134. };
  135. }