简体   繁体   English

在HTML5画布中移动一些对象

[英]Move some objects in HTML5 canvas

In one of my HTML5 canvas element, created some elements such as rectangle, circle and an Image. 在我的HTML5 canvas元素之一中,创建了一些元素,例如矩形,圆形和图像。

My requirement is on key press ( down, up, left, right ) need to move the image only. 我的要求是按键(向下,向上,向左,向右)仅需要移动图像。

Clearing the entire canvas needed when move the position of the image ? 移动图像位置时是否需要清除整个画布?

my code looks like 我的代码看起来像

var canvas;
var width;
var height;

var imgMonsterARun = new Image();
var jeep=new Image();

var mySprite = {
    x: 200,
    y: 200,
    width: 50,
    height: 50,
    speed: 200,
    color: '#000'
};

$(document).ready(function(){

    canvas=$("#canvas")[0];

    //nvas.fill
    width=canvas.width;
    height=canvas.height;





    var ctxr = canvas.getContext("2d");


    ctxr.fillStyle="white";
    ctxr.fillRect(0,0,width,height);
    ctxr.strokeStyle="black";
    ctxr.strokeRect(0,0,width,height);



    jeep.src = "images/me.jpg";

});


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

    var key=e.which;
    var x=mySprite.x;
    var y=mySprite.y;
    alert(x);
    if(key=="37"){
        // left
    }
    if (key=="38"){
        // up

    }

    if (key=="39"){
        // up



    }
    if (key=="40"){
        // down

    }

});

I am new to this. 我是新来的。 I wanna move the jeep on press right 我想按右动吉普车

Thanks in advance 提前致谢

I strongly recommend you to read this wonderful book by Seteve and Jeff Fulton, it's online and free and it covers all the hard points with canvas programming: 我强烈建议您阅读Seteve和Jeff Fulton撰写的这本精彩的书,它是在线免费的,并且涵盖了画布编程的所有难点:

http://chimera.labs.oreilly.com/books/1234000001654/index.html http://chimera.labs.oreilly.com/books/1234000001654/index.html

html: 的HTML:

<canvas id="canvas"></canvas>

js: js:

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'http://upload.wikimedia.org/wikipedia/en/3/35/Information_icon.svg';
canvas.width = 800;
canvas.height = 600;

var mySprite = {
    x: 200,
    y: 200,
    width: 50,
    height: 50,
    speed: 200,
    color: '#c00'
};

var keysDown = {};
window.addEventListener('keydown', function(e) {
    keysDown[e.keyCode] = true;
});
window.addEventListener('keyup', function(e) {
    delete keysDown[e.keyCode];
});

function update(mod) {
    if (37 in keysDown) {
    mySprite.x -= mySprite.speed * mod;
    }
    if (38 in keysDown) {
    mySprite.y -= mySprite.speed * mod;
    }
    if (39 in keysDown) {
    mySprite.x += mySprite.speed * mod;
    }
    if (40 in keysDown) {
    mySprite.y += mySprite.speed * mod;
    }
}

function render() {
    ctx.fillStyle = '#000';
    ctx.fillRect(0, 0, canvas.width, canvas.height);
    ctx.fillStyle = mySprite.color;
    ctx.drawImage(img, mySprite.x, mySprite.y, mySprite.width, mySprite.height);


}

function run() {
    update((Date.now() - time) / 1000);
    render();
    time = Date.now();
}

var time = Date.now();
setInterval(run, 10);

Demo 演示版

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM