Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.10.2018, 10:45
Кандидат Javascript-наук
Отправить личное сообщение для Retro_1477 Посмотреть профиль Найти все сообщения от Retro_1477
 
Регистрация: 14.04.2018
Сообщений: 113

Анимация при помощи канвас
у меня есть несколько картинок и я хочу чтобы они последовательно менялись, при нажатии на определённую клавишу. У меня возникла проблема с тем, что когда персонаж двигается, то у меня отчищается весь холст вместе с задником. Как сделать чтобы убирался только персонаж?

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>

<body>
  <div class="container">
    <div id="Game">
      <div class="bg" width="800" height="600">
        <canvas id="canvas" width="800" height="600"></canvas>
        <img id="background"/>
        <img id="cat">
      </div>
    </div>

  </div>

  <script src="http://code.jquery.com/jquery-3.3.1.js"></script>
  <script>
//Game
var canvas = document.getElementById('canvas'), context = canvas.getContext('2d');
var width = 800, height = 600;
canvas.width = width;
canvas.height = height;
var bg = document.getElementById('background');
var cat = document.getElementById('cat');

drawBG();
drawCat();
// background image
function drawBG() {
  bg.onload = function () {
    context.drawImage(bg, 0, 0);
    bg.style.display = 'none';
  };
  bg.src = 'assets/images/bg/bg.jpg';}

// DRAW CAT
function drawCat(){
  var i = 1;
  cat.onload = function(){
    context.clearRect(0, 0, 800, 600);
    context.drawImage(cat, x, y, 100, 100);
    cat.style.display = 'none';
  };
  cat.src = 'assets/images/cat/run/Run ('+ i +').png';
};

//MOVE CAT 
var x = 0;
var y = 430;

function CheckPos(x) {
  if(x <= 800 && x >= 0){
      return true;
  }
  else return false;
}

$(document).keydown(function(event){

  switch (event.keyCode){
      case 68: {
          if(CheckPos(x+10)){
          x+=10;
          drawCat();
          }
          break;
      }
      case 65: {
          if (CheckPos(x-10)) {
          x-=10;
          drawCat();
          }
          break;
      }

}
});


  </script>
</body>

</html>
Ответить с цитированием
  #2 (permalink)  
Старый 06.10.2018, 11:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Retro_1477,
что мешает отрисовать фон в строке 46?
Ответить с цитированием
  #3 (permalink)  
Старый 06.10.2018, 11:33
Кандидат Javascript-наук
Отправить личное сообщение для Retro_1477 Посмотреть профиль Найти все сообщения от Retro_1477
 
Регистрация: 14.04.2018
Сообщений: 113

де, ты прав. Спасибо.
Просто интересно, есть другой способ, типо задать её в переменную и обновлять только персонажа?
Ответить с цитированием
  #4 (permalink)  
Старый 06.10.2018, 11:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Retro_1477,
context.save()
context.restore()
https://developer.mozilla.org/en-US/...sic_animations
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закрыть блок toogle при пропадании фокуса или при помощи esc? giwuf Библиотеки/Тулкиты/Фреймворки 0 18.01.2018 16:09
Как изменить контекст при помощи call? Alex7851 Events/DOM/Window 2 07.01.2018 21:19
Коллеги, прошу помощи в реализации плавной смены блоков, при клике по checkbox? lebigan Общие вопросы Javascript 4 16.06.2017 10:42
Анимация вертикальной линии напротив текста при сролле mrtdiesel Элементы интерфейса 5 04.06.2017 11:40
Масштабирование при помощи javascript mooni Элементы интерфейса 2 17.06.2013 17:51