Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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_Animation_Canvas - Fatal编程技术网

Javascript画布动画(棍形运动)

Javascript画布动画(棍形运动),javascript,html,animation,canvas,Javascript,Html,Animation,Canvas,我一直在到处寻找一个展示如何制作动画的地方。我见过在哪里你可以把方块移到一个区域,然后再移回来,一个上下循环,但没有什么能像一个移动身体的人那样。我使用css动画,但想尝试javascript画布。这个人物有没有办法在画布上做波浪动画?我假设需要设置超时 <canvas id="canvas" width="400px" height="400px" > Your browser does not support HTML5 Canvas element </canvas>

我一直在到处寻找一个展示如何制作动画的地方。我见过在哪里你可以把方块移到一个区域,然后再移回来,一个上下循环,但没有什么能像一个移动身体的人那样。我使用css动画,但想尝试javascript画布。这个人物有没有办法在画布上做波浪动画?我假设需要设置超时

<canvas id="canvas" width="400px" height="400px" >
Your browser does not support HTML5 Canvas element
</canvas>

<script>
var canvas = document.getElementById("canvas");
context = canvas.getContext("2d"); // get Canvas Context object

context.beginPath();
context.fillStyle = "black"; // #000000
context.arc(200.width, 50, 30, 0, Math.PI * 2, true);
context.fill(); //fill the circle  

context.beginPath(); 
context.lineWidth = 6;
context.stroke();

//body
context.beginPath();
context.moveTo(200, 80);
context.lineTo(200, 180);
context.strokeStyle = "black";
context.stroke();

//arms
context.beginPath();
context.strokeStyle = "black";
context.moveTo(200, 100);
context.lineTo(150, 130);
context.moveTo(200, 100);
context.lineTo(250, 130);
context.stroke();

//legs
context.beginPath();
context.strokeStyle = "black";
context.moveTo(200, 180);
context.lineTo(150, 280);
context.moveTo(200, 180);
context.lineTo(250, 280);
context.stroke();
</script>     

首先,因为我们要反复绘制一个框架,所以我们需要将绘制代码放入一个draw函数中

在窗口对象上有一个名为requestAnimationFrame的方法,该方法在任何时候都可以调用该绘图函数。这样可以防止窗口耗尽所有内存,并且如果在动画运行时翻转选项卡,将暂停动画。setTimeout和setInterval过去用于此,但现在不再使用它们

由于所发生的一切是始终调用draw函数,因此为了只定期更改绘图,我们在本例中设置了一个变量wave,该变量确定如何绘制手臂

每当调用draw时,时间戳用于确定自上次绘制以来是否已过900毫秒。如果没有,我们将继续调用该函数,直到该持续时间结束。通常情况下,我们希望这是更快,但由于我们使用的是一个'波'作为一个例子,我们只有两个绘图状态向上或向下,它的作品很好

let timestamp = Date.now();
let wave = false;


draw();
var canvas=document.getElementByIdcanvas; context=canvas.getContext2d;//获取画布上下文对象 让timestamp=Date.now; 让波=假; 画 函数图{ ifDate.now首先,因为我们要反复绘制一个框架,所以我们需要将绘制代码放入一个draw函数中

在窗口对象上有一个名为requestAnimationFrame的方法,该方法在任何时候都可以调用该绘图函数。这样可以防止窗口耗尽所有内存,并且如果在动画运行时翻转选项卡,将暂停动画。setTimeout和setInterval过去用于此,但现在不再使用它们

由于所发生的一切是始终调用draw函数,因此为了只定期更改绘图,我们在本例中设置了一个变量wave,该变量确定如何绘制手臂

每当调用draw时,时间戳用于确定自上次绘制以来是否已过900毫秒。如果没有,我们将继续调用该函数,直到该持续时间结束。通常情况下,我们希望这是更快,但由于我们使用的是一个'波'作为一个例子,我们只有两个绘图状态向上或向下,它的作品很好

let timestamp = Date.now();
let wave = false;


draw();
var canvas=document.getElementByIdcanvas; context=canvas.getContext2d;//获取画布上下文对象 让timestamp=Date.now; 让波=假; 画 函数图{ ifDate.now完美的很好的解释。非常感谢。很高兴我能帮忙!有没有办法做得更多?你有网站的例子吗?如果我想让他跳起来挥手怎么办,
然后向右走?如果你想让我给你更多的名声,我可以再问你一个问题@完美!很好的解释。非常感谢。很高兴我能帮忙!有没有办法做得更多?你有网站的例子吗?如果我想让他跳起来挥手,然后向右走怎么办?如果你想让我给你更多的名声,我可以再问你一个问题@兹弗里希