动画在画布中移动图像

时间:2015-11-16 21:00:57

标签: javascript html5 api canvas

我是使用画布的新手,但想知道我是否可以获得一些帮助或建议从哪里开始。我目前在画布上绘制了一个圆圈,尝试了多种我认为可行的方法,但是无法绕过它。在线搜索时,我只能在画布本身绘制形状时找到帮助。

以下是我到目前为止:JSFiddle

JavaScript的:

var one = document.getElementById("canvOne");
var canvOne = one.getContext("2d");
var img = new Image();
img.onload = function(){
    canvOne.drawImage(img, 10, 10);
};

img.src = "img/circle.jpg";

function oneStart(){
    for(var i = 0; i < 300; i++){
        img.style.left = i + 'px';
        setTimeout(oneStart, 1000);
    }
};

有人可以帮我一把吗?

1 个答案:

答案 0 :(得分:0)

jsFiddle:http://jsfiddle.net/8eLL7L5L/3/

的javascript

//canvas one
var one = document.getElementById("canvOne");
var canvOne = one.getContext("2d");
var img = new Image();

var animate = false;
var circlePosX = 10;
var circlePosY = 10;

img.onload = function () {
    canvOne.drawImage(img, circlePosX, circlePosY);
};

img.src = "http://www.alexvolley.co.uk/other/circle.jpg";

var start = function()
{
    animate = true;
}

var stop = function()
{
    animate = false;   
}

setInterval(function () {
    // Only update circle position if animate is true
    if (animate) {
        circlePosX += 1;
        canvOne.fillStyle = "#FFF";
        canvOne.fillRect(0, 0, one.width, one.height);
        canvOne.drawImage(img, circlePosX, circlePosY);
    }
}, 3);

我所做的只是创建了3个变量并添加了一些小函数,现在存储圆圈的XPos和YPos以便我们可以访问它们,我还创建了一个bool变量{{1这用于检查我们是否应该为圆圈设置动画。

start函数只是将animate设置为true

stop函数simple将animate设置为false

setInterval每隔3毫秒就会持续运行相同的代码,所有这一切都会清除画布,然后重新绘制圆圈。如果我们不清除画布,您会看到当animate为true时会出现多个圆圈。

我希望这有帮助