Вы можете анимировать изображение на холсте
383 просмотра
1 ответ
Так как я учусь новому в html и javascript, мне было интересно, можете ли вы поместить движущееся изображение из стороны в сторону на холсте? Если да, то как это можно сделать, пожалуйста ???
Вот что я должен сделать до сих пор.
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="ann.css" />
<script>
window.onload = animate;
var canvas=document.getElementById('mycanvas');
var ctx=canvas.getContext('2d');
function animate()
{
window.setInterval(slide,1000);
}
function slide()
{
var obj = document.getElementById("ball");
var left = obj.style.left;
if(left === ''){
left = 0;
}
var wartosc = parseInt(left, 10);
obj.style.left = (wartosc + 10) + "px";
}
function Loop() {
if (left>canvas.width){
var right = obj.style.right;
if(right === ''){
right = 0;
}
var wartosc = parseInt(right, 10);
obj.style.right = (wartosc + 10) + "px";
}
</script>
<style>
#ball
{
position: relative;
left: 1px;
}
#mycanvas {border:1px solid #000000}
</style>
</head>
<body>
<img src="ball.gif" id="ball" alt="Usmiech" width="30" height="30" />
<canvas id=mycanvas width=600 height=50>Canvas Not Supported
</canvas>
<body>
</html>
Я хочу, чтобы изображение содержалось внутри холста и перемещалось слева направо, а когда достигало правой стороны холста, возвращалось влево и так далее непрерывно.
Однако мои проблемы, если это можно сделать, я не знаю, как я могу поместить изображение на холст, и тогда я не могу заставить изображение двигаться вправо, как только оно достигнет конца холста. Я думаю, что проблема заключается в моей функции цикла, которая пытается заставить ее идти вправо.
Как вы можете видеть из ссылки на скрипку, когда я удаляю код функции цикла, он работает. Однако это будет только влево.
Пожалуйста, кто-нибудь может помочь мне исправить это? :)
Автор: Brian Источник Размещён: 12.11.2019 09:03Ответы (1)
1 плюс
Вы можете анимировать таблицу спрайтов вместо .gif
.
Последовательность проста:
- Очистить холст,
- Нарисуйте следующий спрайт в последовательности и поместите его, чтобы продвигаться по холсту.
- Подождите некоторое время (возможно, в
requestAnimationFrame
цикле). - Повторите № 1.
Вот аннотированный код и демо:
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
// timing related vars
var nextTime=0;
var spriteCount=7;
var interval=700/spriteCount;
// sprite related vars
var sIndex=0;
var sw=60;
var sh=95;
var animationOn=true;
// current x,y position of sprite
var x=100;
var y=100;
// load the spritesheet
var ss=new Image();
ss.onload=start;
ss.src="http://i59.tinypic.com/jpkk6f.jpg";
function start(){
// draw the first sprite
ctx.drawImage(ss,sIndex*sw,0,sw,sh,x,y,sw,sh);
// start the animation loop
requestAnimationFrame(animate);
}
function animate(time){
// wait for the specified interval before drawing anything
if(time<nextTime || !animationOn){requestAnimationFrame(animate); return;}
nextTime=time+interval;
// draw the new sprite
ctx.clearRect(0,0,cw,ch);
ctx.drawImage(ss,sIndex*sw,0,sw,sh,x,y,sw,sh);
// get the next sprite in sequence
if(++sIndex>=spriteCount){sIndex=0;}
// advance the sprite rightward
x+=5;
if(x>cw){x=-sw-10;}
// request another animation loop
requestAnimationFrame(animate);
}
body{ background-color: ivory; }
#canvas{border:1px solid red; margin:0 auto; }
<canvas id="canvas" width=300 height=300></canvas>
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- html5 В чем ключевое отличие HTML 4 от HTML 5?
- html5 Ввод текста в формате HTML позволяет вводить только цифры
- html5 Должен ли я создавать анкеры HTML с «именем» или «id»?
- html5 Должен ли я поместить элементы ввода внутри элемента метки?
- html5 HTML 5 тег <video> против Flash-видео. Каковы плюсы и минусы?
- html5 контекстные события изменения
- canvas Как получить координаты щелчка мышью на элементе canvas?
- canvas Можно ли отключить сглаживание элемента HTML <canvas>?
- canvas getPixel из HTML Canvas?
- canvas Нарисовать стрелку на теге холста
- canvas WPF Виртуализация холста
- canvas Можно ли связать свойство Canvas's Children в XAML?