Как заставить SplashScreen показываться через Jquery - PullRequest
0 голосов
/ 02 марта 2020

У меня есть игра, которую я делаю, и я хочу создать экран spla sh, который будет отображаться за 3 секунды до запуска игры. Однако я не могу выполнить sh, потому что я не знаю, как заставить экран spla sh успешно отображаться, БЕЗ игры, запускаемой в фоновом режиме. (Парады начинают двигаться, как только игра загружается)

Это игра на Марди Гра, и в конце есть парад. Я хочу, чтобы экран spla sh отображался (просто белый экран spla sh с надписью «Парад Марди Гра»!) В течение 3 секунд, затем исчезал, и игра начиналась.

Вот JSFiddle (который, к сожалению, не показывает движение парадов, потому что я не могу прикрепить файлы к JSFiddle, извините).

Но вот мое репо , если вы хотите клонировать его и открыть в браузере, чтобы увидеть полную анимацию.

По сути, Spla sh Экран должен покрывать всю левую часть игры (с серой дорогой) на белом фоне. Это не должно покрывать правую желтую сторону, которая имеет информацию о табло. Я пытаюсь добиться этого с помощью Jquery, но я не могу этого сделать. Я не думаю, что мой Jquery на самом деле работает, так как нет анимации, и я все еще могу видеть фон игры. Я получил очень простой код из этого сообщения StackOverflow .

Это мой Jquery код, управляющий экраном Spla sh:

function splash(param) {
  var time = param;
  setTimeout(function() {
    $('#splash').hide();
  }, time);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<body onload="splash(3000)">

  <div class='outer-container'>

    <div class='game-window'>
      <div id="splash">
        <div id="splash-content">Mardi Gras Parade!!!!!!</div>
      </div>
      <div id="actualGame">

        <div id='player' class='playerObject'>
          <img class='player-avatar' src='img/person.png' height='50px' />
          <!--person img: src='https://www.google.com/imgres?imgurl=http%3A%2F%2Fclipart-library.com%2Fnew_gallery%2F54-540691_others-clipart-helpful-person-generic-person.png&imgrefurl=http%3A%2F%2Fclipart-library.com%2Fclip-art%2F54-540691_others-clipart-helpful-person-generic-person.htm&tbnid=V19QgOYn0jYyzM&vet=12ahUKEwidx5GevcrnAhUJ0KwKHQynD9AQMygBegUIARCJAg..i&docid=hVn27RN51ga3yM&w=920&h=830&q=person&hl=en&ved=2ahUKEwidx5GevcrnAhUJ0KwKHQynD9AQMygBegUIARCJAg'-->
        </div>
        <div id="paradeRoute">
          <div id="dottedLine"></div>
          <div id="paradeFloats" class="bothFloats">
            <div id="paradeFloat1" class='paradeFloat'>
              <img src='img/parade_float_1.gif' height='80px' />
              <!-- src: https://www.google.com/imgres?imgurl=https%3A%2F%2Fcdn.clipart.email%2Fb0a85a880dc856c8129f51d506469510_mardi-gras-background-transparent-png-clipart-free-download-ywd_474-256.gif&imgrefurl=https%3A%2F%2Fwww.clipart.email%2Fclipart%2Ftransparent-background-mardi-gras-float-clipart-231098.html&tbnid=QDcU0K_06jcQJM&vet=12ahUKEwj40aPwwsrnAhUFgK0KHU4qCkQQMygEegUIARDsAQ..i&docid=7_c8q7QtWx89bM&w=474&h=256&q=mardi%20gras%20parade%20clip%20art&hl=en&client=firefox-b-1-e&ved=2ahUKEwj40aPwwsrnAhUFgK0KHU4qCkQQMygEegUIARDsAQ -->
            </div>
            <div id="paradeFloat2" class='paradeFloat'>
              <img src='img/parade_float_2.png' height='80px' />
              <!-- Adapted from src: https://www.google.com/imgres?imgurl=https%3A%2F%2Fcdn.clipart.email%2F2075f16e1c812d5ba8ecece2b6924d75_mardi-gras-clipart-at-getdrawingscom-free-for-personal-use-_340-270.jpeg&imgrefurl=https%3A%2F%2Fwww.clipart.email%2Fclipart%2Fmardi-gras-float-clip-art-228088.html&tbnid=_LNqQJQgyaHKcM&vet=12ahUKEwj40aPwwsrnAhUFgK0KHU4qCkQQMygLegUIARD7AQ..i&docid=Fv4gfo44aw_StM&w=340&h=270&q=mardi%20gras%20parade%20clip%20art&hl=en&client=firefox-b-1-e&ved=2ahUKEwj40aPwwsrnAhUFgK0KHU4qCkQQMygLegUIARD7AQ -->
            </div>
          </div>
        </div>
      </div>
    </div>

    <!-- Scoreboard -->
    <div class='status-window' style='text-align: center'>
      <h3>Welcome!</h3>
      <hr>
      <br>
      <p>Score:</p>
      <h1 id='score-box'>0</h1>
      <br/>
      <div>
        <b># of beads collected:</b>
        <span id="beadsCounter">0</span>
      </div>
      <div>
        <b># of candy pieces collected:</b>
        <span id="candyCounter">0</span>
      </div>
    </div>
  </div>
</body>

1 Ответ

0 голосов
/ 02 марта 2020

Сначала удалите onload="splash(3000)" из <body>

Создайте отдельный js файл и переместите javascript в конец </body>

    ...
    <script async src="scripts/index.js"></script>
  </body>

Script

scripts/index.js

function splash(time) {
  return new Promise(resolve => {
    setTimeout(() => {
      $("#splash").hide();
      resolve();
    }, time);
  });
}

function loop() {
  $("#paradeFloats").css({ left: -300 });
  $("#paradeFloats").animate(
    {
      left: "+=850"
    },
    10000,
    "linear",
    function() {
      loop();
    }
  );
}

$(document).ready(function() {
  // Wait for splash to resolve after 3 seconds, Then call loop()
  splash(3000).then(() => {
    loop();
  });
});

Подробнее о Обещания - Также ознакомьтесь с примером раздела.

CSS

Сделайте следующее изменения в CSS, при необходимости измените.

#outer-container {
  ...
  overflow: hidden; // Hide everything outside of #outer-container
}

#splash {
  align-items: center;
  background-color: #fff;
  border: 3px solid #000;
  bottom: 0;
  display: flex;
  justify-content: center;
  left: 0;
  position: absolute;
  right: 0;
  text-align: center;
  top: 0;
  vertical-align: middle;
  z-index: 9999;
}

#splash-content {
  font-style: italic;
  font-size: 30px;
}

Пример Codesandbox

https://codesandbox.io/s/laughing-dream-8c4r9

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...