dir.by  
  Поиск  
Программирование, разработка, тестирование
JavaScript - язык программирования для HTML
Рисуем картинку с движением и анимацией (sprite). Используем HTML элемент <canvas>. Для движения используем JavaScript: var img = new Image(), img.src = url, drawImage, timer, window.setInterval | стандарт ES5
  Посмотрели 5492 раз(а)    
 Рисуем картинку с движением и анимацией (sprite). Используем HTML элемент <canvas>. Для движения используем JavaScript: var img = new Image(), img.src = url, drawImage, timer, window.setInterval 
Картинка

перемещается с анимацией вот так:

Шаг 1. Создадим новый файл 1.html
  Html     Напишем код в файле 1.html
<html>

<!-- заголовок -->
<head>
     <meta charset="utf-8">
     <title>Example</title>
</head>

<!-- страница -->
<body>
     <!-- HTML canvas -->
     <canvas id="canvas1" width='400px' height='400px'></canvas>

     <!-- JavaScript функции -->
     <script>

          // загружаем картинки из файлов
          function loadImages(files, callbackAllFilesLoaded)
          {
               // считаем количество файлов
               var countFilesToLoad = 0;
               for (var fileId in files)
               {
                    countFilesToLoad++;
               }

               var images = {};
               for (var fileId in files)
               {
                    // создаем пустую картинку
                    images[fileId] = new Image();

                    // событие onload
                    images[fileId].onload = function()
                    {
                         // когда все файлы загрузились, вызываем нашу функцию callbackAllFilesLoaded чтобы нарисовать картинку
                         if ( --countFilesToLoad <= 0 )
                         {
                              callbackAllFilesLoaded(images);
                         }
                    };

                    // загружаем картинку
                    images[fileId].src = files[fileId];
               }
          }

          function AnimationInit()
          {
               window.requestAnimFrame = (function(callback) {
                    return window.requestAnimationFrame ||
                         window.webkitRequestAnimationFrame ||
                         window.mozRequestAnimationFrame ||
                         window.oRequestAnimationFrame ||
                         window.msRequestAnimationFrame ||
                         function(callback)
                         {
                              window.setTimeout(callback, 1000 / 60); // 60 time in 1 second (1000 ms)
                         };
               })();
          }

     </script>

     <!-- главный код -->
     <script>
          function MyAnimation(context, canvas, loadedImages, data)
          {
               <!-- очищаем все на canvas -->
               context.clearRect(0, 0, canvas.width, canvas.height);
         
               // рисуем часть картинки по позиции x,y
               const rect = data.spriteOffsets[Math.trunc(data.spriteIndex) % data.spriteOffsets.length ];
               context.drawImage(loadedImages.tree, rect.x, rect.y, rect.width, rect.height, data.xPos, data.yPos, rect.width, rect.height);

               // следующий sprite индекс
               data.spriteIndex += 0.15;

               // меняем позицию картинки
               data.xPos = data.xPos>410 ? 0 : data.xPos + 1.3;
         
               // request new frame
               requestAnimFrame(function(){
                    MyAnimation(context, canvas, loadedImages, data);
               });
          }

          <!-- файл -->
          var files = {
               tree : "./dog_run.png"
          };
         
          <!-- context для рисования -->
          var canvas = document.getElementById('canvas1');
          var context = canvas.getContext('2d');

          <!-- загружаем картинки -->
          loadImages(files, function (loadedImages)
          {
               <!-- инициализация анимации -->
               AnimationInit();

               <!-- данные для перемещения -->
               var spriteOffsets = [
                    {x:244, y:3, width:57, height:42},
                    {x:304, y:4, width:54, height:39},
                    {x:363, y:4, width:57, height:38},
                    {x:420, y:1, width:55, height:40},
                    {x:483, y:4, width:57, height:36},
                    {x:542, y:4, width:57, height:38}
               ];

               var data = {
                    xPos: 0,
                    yPos: 20,
                    spriteIndex : 0,
                    spriteOffsets: spriteOffsets
               };

               <!-- запускаем бесконечную анимацию -->
               MyAnimation(context, canvas, loadedImages, data);
          });

     </script>
</body>

</html>
Шаг 2. Скачиваем картинку

dog_run.png картинка должна находится в той же папке, где и файл 1.html
Шаг 3. Запускаем в браузере файл 1.html
 
← Предыдущая тема
Рисуем картинку с движением. Используем HTML элемент <canvas>. Для движения используем JavaScript: var img = new Image(), img.src = url, drawImage, timer, window.setInterval | стандарт ES5
 
Следующая тема →
Как определить устройство (планшет, компьютер, телефон) сейчас используется в JavaScript, HTML | стандарт ES5
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Картинки

Объявления
Объявления
JavaScript - язык программирования для HTML  
В каком редакторе (программе) удобно писать JavaScript код?
Новое приложение
Создаем новое приложение JavaScript в текстовом редакторе
Создаем новое приложение JavaScript в Visual Studio Code. Отладка приложения. Смотрим в отладке как по шагам выполняется JavaScript
Отладка JavaScript, HTML
Отладка JavaScript в Google Chrome. Используем debugger
Как узнать (увидеть) где ошибка при выполнении HTML, JavaScript в Google Chrome
Отладка JavaScript В Google Chrome. Используем console.log("Hello!")
JavaScript стандарт ES5. Издан в 2009 году. Поддерживается всеми браузерами
Функция
Функция В JavaScript. Пример: function CalculateSum(value1, value2) { ... } | стандарт ES5
Функция return || В JavaScript. Пример: function getPersonName(name) { return name || "Evgen" } | стандарт ES5
Вызов функции до ее определения (Hoisting) В JavaScript | стандарт ES5
Переменные внутри функции (время жизни переменных внутри функции) JavaScript | стандарт ES5
Передача параметров по значению и по ссылке в функцию В JavaScript | стандарт ES5
Как узнать ... существует ли функция по названию В JavaScript? Пример: typeof calcSum == "function" | стандарт ES5
Функция описанная внутри функции. JavaScript | стандарт ES5
Безымянная функция
Безымянная функция В JavaScript . Использование безымянной функции: создаем новую переменную и новой переменной назначаем безымянную функцию. Пример: var myFunc1 = function (a, b) { return a + b; } ; | стандарт ES5
Безымянная функция В JavaScript . Использование безымянной функции: безымянную функцию передаем как параметр в другую функцию. Пример: Calculate(15, 7, function(v1, v2) {return v1+v2;}); | стандарт ES5
Само-вызывающая безымянная функция
Само-вызывающая безымянная функция В JavaScript. Где используется? Используется в Yandex рекламе. Пример: ( function(){ ... } )(); | стандарт ES5
Создаем файл js с объектом содержащий экспортные переменные и функции. Это пример использования само-вызывающей безымянной функции | стандарт ES5
Лямбда функция (сокращенный вариант безымянной функции)
Лямбда функция В JavaScript . Использование лямбда функции. [Пример1] var myFunc1 = (a, b) => a + b; [Пример2] Calculate(15, 7, (v1, v2) => {return v1+v2;}); | стандарт ES5
Переменные
Переменные В JavaScript (текст, число, флаг, дата и время) | стандарт ES5
Доступ к переменным до их определения (Hoisting) В JavaScript | стандарт ES5
Область видимости переменных var, let, const В JavaScript | стандарт ES5
Текст, строки В JavaScript
Текст В JavaScript. Класс String. Пример: var myText = String("World"); | стандарт ES5
Length (длина строки В JavaScript) | стандарт ES5
Функция replace(text1, text2) заменить текст В JavaScript | стандарт ES5
Функция toUpperCase() переводит текст в верхний регистр JavaScript | стандарт ES5
Функция toLowerCase() перевод текста в нижний регистр JavaScript | стандарт ES5
Функция split(delimiter) разделяет строку на подстроки JavaScript | стандарт ES5
Функция charAt(position) получить символ по позиции JavaScript | стандарт ES5
Функция substr(pos, len) возвращает подстроку JavaScript | стандарт ES5
Функция slice(pos1, pos2) возвращает подстроку JavaScript | стандарт ES5
Функция substring(pos1, pos2) возвращает подстроку JavaScript | стандарт ES5
Функция indexOf(text, startPos) ищет подстроку и возвращает индекс JavaScript | стандарт ES5
Функция startsWith(text) проверяет, начинается ли строка с указанной подстроки JavaScript | стандарт ES5
Функция trim() удалить пробелы в начале и в конце строки JavaScript | стандарт ES5
Функция padStart(length, symbol) добавляет в начале строки символы до нужной длины строки JavaScript | стандарт ES5
Функция padEnd(length, symbol) добавляет в конце строки символы до нужной длины строки JavaScript | стандарт ES5
В текстовую переменную можно назначить текст как много строк. Пример: var myText = `Hello \n Thanks \n Bye` | JavaScript стандарт ES6
В текстовой переменной можно писать выражения с переменными (форматирование, интерполяция строки). Пример: var myText = `Hello ${a}` | JavaScript стандарт ES6
Регулярные выражения
Регулярные выражения в JavaScript | стандарт ES5
Пишем регулярное выражение чтобы удалить все специальные символы кроме букв и цифр | Regex JavaScript | стандарт ES5
Числа и математические функции
Числа В JavaScript. Конвертация текста в число. Округление числа. Перевод шестнадцатиричного в десятичное число. | стандарт ES5
Математические функции из библиотеки Math: Sin, cos, log, pow и так далее В JavaScript | стандарт ES5
Дата и время
Дата и время (год, месяц, число, часы, минуты, секунды) В JavaScript. Класс Date | стандарт ES5
Массив
Массив В JavaScript это [] или класс Array | стандарт ES5
Разница между push(items) и push(...items) | Добавление массива в массив В JavaScript | стандарт ES5
Коллекции Map и Set
Коллекция "ключ-значение" В JavaScript. Класс Map | стандарт ES5
Коллекция уникальных значений В JavaScript. Класс Set | стандарт ES5
Объект {набор свойств и функций}
{} это объект В JavaScript. Объект содержит набор свойств и функции. Пример var book = {Name: "Волшебник Средиземноморья", Price: 120}; | стандарт ES5
{...} = объект в JavaScript заполняем из переменных класса или другим объектом. Пример: const {name, total, price} = b.myProps; | стандарт ES5
Класс (это функция с использованием new) | стандарт ES5
Класс в JavaScript это обычная функция-конструктор. Такая функция-конструктор содержит простые данные, объекты, внутренние функции В JavaScript. Для создания объекта класса используется new Пример: function Book() { ... } ... var obj1 = new Book(); | стандарт ES5
Инкапсуляция переменных (скрытие переменных для доступа) в функции (в виде класса) В JavaScript | стандарт ES5
prototype - это набор функций, переменных для всех экземпляров класса (в виде функции) В JavaScript | стандарт ES5
try catch
Зачем нужно использовать try и catch В JavaScript? | стандарт ES5
Замыкание (closure) В Javascript
Что такое замыкания (closure) В JavaScript ? Стандарт ES5
Управление памятью в JavaScript
Управление памятью в JavaScript | стандарт ES5
Примеры движение картинки и анимация
Анимация человечка на месте. Используем HTML элемент <div>. Для анимации используем CSS стили: "animation", "background-image", "background-position", "keyframes" | стандарт ES5
Анимация человечка в движении (sprite). Используем HTML элементы <div>, <img>. Для анимации используем CSS стили: "animation", "background-image", "background-position", "keyframes" | стандарт ES5
Рисуем картинку с движением. Используем HTML элемент <canvas>. Для движения используем JavaScript: var img = new Image(), img.src = url, drawImage, timer, window.setInterval | стандарт ES5
Рисуем картинку с движением и анимацией (sprite). Используем HTML элемент <canvas>. Для движения используем JavaScript: var img = new Image(), img.src = url, drawImage, timer, window.setInterval | стандарт ES5
Примеры
Как определить устройство (планшет, компьютер, телефон) сейчас используется в JavaScript, HTML | стандарт ES5
Редактор текста пишем на HTML, JavaScript | стандарт ES5
Делаем Popup используя HTML и Javascript
Как сделать Popup окно в HTML странице | Javascript, HTML, CSS
Моя игра (HTML, JavaScript)
Моя игра "Wizard World" | HTML, JavaScript
PDF readers. Загрузка и отображение файла PDF (JavaScript, HTML)
PDF reader. Загрузка и отображение файла PDF (adobe JavaScript, HTML) | PDF JavaScript implemented by Adobe
PDF reader. Загрузка и отображение файла PDF (JavaScript, HTML) | PDF JavaScript implemented by Mozilla
JavaScript стандарт ES6. Издан в 2015 году. Поддерживается НЕ всеми браузерами. Синонимы ES6, ES2015, ECMAScript 2015
В текстовой переменной можно писать выражения с переменными (форматирование, интерполяция строки). Пример: var myText = `Hello ${a}` | JavaScript стандарт ES6
class | Класс В JavaScript. Пример: class Book {...} ... var obj1 = new Book(); | стандарт ES6
promise В JavaScript | стандарт ES6

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика