Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 如何使用html5画布为多个形状的移动设置动画_Javascript_Animation_Html5 Canvas_Shapes - Fatal编程技术网

Javascript 如何使用html5画布为多个形状的移动设置动画

Javascript 如何使用html5画布为多个形状的移动设置动画,javascript,animation,html5-canvas,shapes,Javascript,Animation,Html5 Canvas,Shapes,我的目标是使用canvas标签重新创建我在Flash中发现的这类项目 这就是我要复制的项目: 我发现很难理解,当形状必须逃离视野时,如何为它们的运动设置动画 这是我目前编译的代码,我使用键盘将正方形移动到各个矩形中: 你能描述一下你想要实现的flash动画吗?(由于某种原因,我无法查看链接,即使我安装了flash player)。从你的代码来看,你似乎只需要适应在你的if/else条件下x/y位置是否超出窗口,例如else if(xPos 525){xPos=75;}。但由于我看不到你想要复制

我的目标是使用canvas标签重新创建我在Flash中发现的这类项目

这就是我要复制的项目:

我发现很难理解,当形状必须逃离视野时,如何为它们的运动设置动画

这是我目前编译的代码,我使用键盘将正方形移动到各个矩形中:


你能描述一下你想要实现的flash动画吗?(由于某种原因,我无法查看链接,即使我安装了flash player)。从你的代码来看,你似乎只需要适应在你的if/else条件下x/y位置是否超出窗口,例如
else if(xPos 525){xPos=75;}
。但由于我看不到你想要复制什么,我不知道这是否是你问题的[全部]解决方案..嗨,我为你制作了一个视频,这样你就可以确切地看到我想要实现的目标:嗨,我只是看了视频(与我预期的大不相同)。您是否有一组正在处理的图像?我想你可能会使用关键帧/变换/css3动画。。我今晚真的没有时间花在这上面,但我会看看的。尝试一些动画。如果你有一个图像集,这将帮助很多!我会努力的,谢谢!你过得怎么样?你有什么进展吗?您可能会在他提供的示例小提琴中发现有用的(与动画相关),例如,属性background-position-x在JSFIDLE中以红色突出显示(这通常表示错误),但是您能描述一下您想要实现的flash动画吗?(由于某种原因,我无法查看链接,即使我安装了flash player)。从你的代码来看,你似乎只需要适应在你的if/else条件下x/y位置是否超出窗口,例如
else if(xPos 525){xPos=75;}
。但由于我看不到你想要复制什么,我不知道这是否是你问题的[全部]解决方案..嗨,我为你制作了一个视频,这样你就可以确切地看到我想要实现的目标:嗨,我只是看了视频(与我预期的大不相同)。您是否有一组正在处理的图像?我想你可能会使用关键帧/变换/css3动画。。我今晚真的没有时间花在这上面,但我会看看的。尝试一些动画。如果你有一个图像集,这将帮助很多!我会努力的,谢谢!你过得怎么样?你有什么进展吗?您可能会在他提供的示例小提琴中发现有用的(与动画相关),例如,属性background-position-x在JSFIDLE中以红色突出显示(通常表示错误),但是
var canvas = document.querySelector("#demo_canvas");
var ctx = canvas.getContext("2d");

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

var xPos = 75;
var yPos = 75;

function draw() {
 ctx.rect(50, 50, 150, 100);
 ctx.stroke();

 ctx.rect(250, 50, 150, 100);
 ctx.stroke();

 ctx.rect(450, 50, 150, 100);
 ctx.stroke();

 ctx.rect(250, 200, 150, 100);
 ctx.stroke();

 pg.rect(xPos, yPos, 50, 50);
 pg.stroke();
};

draw();
console.log("x = " + xPos + ", y = " + yPos);


function move(e) {

 //ARROW KEY RIGHT
 if (e.keyCode == 39) {
  if (xPos == 75 && yPos == 75) {
   xPos += 225;
  }
  else if (xPos == 300 && yPos == 75) {
   xPos += 225;
  };
 };

 //ARROW KEY LEFT
 if (e.keyCode == 37) {
  if (xPos == 75 && yPos == 75) {
   xPos -= 0;
  }
  else if (xPos == 300 && yPos == 75) {
   xPos -= 225;
  }
  else if (xPos == 525 && yPos == 75) {
   xPos -= 225;
  };
 };

 //ARROW KEY UP
 if (e.keyCode == 38) {
  if (yPos == 75) {
   yPos -= 0;
  }
  else if (yPos == 225) {
   yPos -= 150;
  }
 };

 //ARROW KEY DOWN
 if (e.keyCode == 40) {
  if (yPos == 75 && xPos == 300) {
   yPos += 150;
  }
 };

 canvas.width = canvas.width;
 draw();
 console.log("x = " + xPos + ", y = " + yPos);
};

document.onkeydown = move;