Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 清除画布后不绘制图像_Javascript_Html_Canvas - Fatal编程技术网

Javascript 清除画布后不绘制图像

Javascript 清除画布后不绘制图像,javascript,html,canvas,Javascript,Html,Canvas,我想清除画布,然后在x轴上重新绘制-30像素。当我运行它时,画布会清除,但不会重新绘制画布。当我在没有“clearRect”的情况下运行它时,put只是在当前图像上绘制图像。有人知道问题出在哪里吗?提前谢谢 ctx.save(); ctx.clearRect(0, 0, 480, 400); ctx.translate(-30, 0); ctx.drawImage(mycanvasvariable, 0, 0); ctx.restore(); 演示: 问题:每次平移到相同的x坐标(-30) 尝

我想清除画布,然后在x轴上重新绘制-30像素。当我运行它时,画布会清除,但不会重新绘制画布。当我在没有“clearRect”的情况下运行它时,put只是在当前图像上绘制图像。有人知道问题出在哪里吗?提前谢谢

ctx.save();
ctx.clearRect(0, 0, 480, 400);
ctx.translate(-30, 0);
ctx.drawImage(mycanvasvariable, 0, 0);
ctx.restore();
演示:

问题:每次平移到相同的x坐标(-30)

尝试使用变量(offsetX)更改x坐标:

var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");

var offsetX=250;
var offsetY=100;

var mycanvasvariable=new Image();
mycanvasvariable.onload=start;
mycanvasvariable.src="https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house32x32transparent.png";
function start(){
   draw(offsetX,offsetY);
}

function draw(offsetx,offsety){
    ctx.save();
    ctx.clearRect(0, 0, 480, 400);
    ctx.translate(offsetx, offsety);
    ctx.drawImage(mycanvasvariable, 0, 0);
    ctx.restore();    
}

document.addEventListener("keydown",handleKeydown,false);
function handleKeydown(e){
    switch(e.keyCode){
        case 39: offsetX+=10; break;  // right arrow
        case 37: offsetX-=10; break;  // left arrow
        case 40: offsetY+=10; break;  // up arrow
        case 38: offsetY-=10; break;  // down arrow
    } 
    draw(offsetX,offsetY);
}

我运行的函数是在按键上的,因此如何将该函数实现到按键一中,您知道>确定吗?(1)侦听键盘事件:document.addEventListener(“keydown”,handleKeydown,false);(2) 处理键盘事件并响应相应的按键代码:函数handleKeydown(e){var key=e.keyCode;if(key==39){//move right}否则if(key==37){//move left};}我知道如何测试按键,谢谢,我不知道如何合并你的函数和我的函数。欢迎!你可以减少offsetX以回应左键,增加offsetX以回应右键。哦,是的,太好了,非常感谢