This repository has been archived by the owner on Dec 22, 2021. It is now read-only.
/
08-walking-4.html
64 lines (55 loc) · 1.96 KB
/
08-walking-4.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Walking 4</title>
<link rel="stylesheet" href="../include/style.css">
</head>
<body>
<header>
Example from <a href="http://amzn.com/1430236655?tag=html5anim-20"><em>Foundation HTML5 Animation with JavaScript</em></a>
</header>
<canvas id="canvas" width="400" height="400"></canvas>
<script src="../include/utils.js"></script>
<script src="./classes/segment.js"></script>
<script>
window.onload = function () {
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d'),
segment0 = new Segment(100, 30),
segment1 = new Segment(100, 20),
segment2 = new Segment(100, 30),
segment3 = new Segment(100, 20),
cycle = 0,
offset = -Math.PI / 2; //should be between PI and -PI
segment0.x = 200;
segment0.y = 200;
segment1.x = segment0.getPin().x;
segment1.y = segment0.getPin().y;
segment2.x = 200;
segment2.y = 200;
segment3.x = segment2.getPin().x;
segment3.y = segment2.getPin().y;
function walk (segA, segB, cyc) {
var angle0 = (Math.sin(cyc) * 45 + 90) * Math.PI / 180,
angle1 = (Math.sin(cyc + offset) * 45 + 45) * Math.PI / 180;
segA.rotation = angle0;
segB.rotation = segA.rotation + angle1;
segB.x = segA.getPin().x;
segB.y = segA.getPin().y;
}
(function drawFrame () {
window.requestAnimationFrame(drawFrame, canvas);
context.clearRect(0, 0, canvas.width, canvas.height);
cycle += 0.02;
walk(segment0, segment1, cycle);
walk(segment2, segment3, cycle + Math.PI);
segment0.draw(context);
segment1.draw(context);
segment2.draw(context);
segment3.draw(context);
}());
};
</script>
</body>
</html>