canvas实现弹性绳子手掌反重力交互效果代码
代码语言:html
所属分类:动画
代码描述:canvas实现弹性绳子手掌反重力交互效果代码,试试用鼠标抓住两个手掌。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
html,
body {
width: 100%;
height: 100%;
overflow: hidden;
touch-action: none;
cursor: none;
}
</style>
</head>
<body>
<!-- partial:index.partial.html -->
<canvas id="canvas"></canvas>
<!-- partial -->
<script >
function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}
function lerp(a, b, n) {
return (1 - n) * a + n * b;
}
//*‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡/
// Canvas
//*‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡*/
class Canvas {
constructor({ canvas, entities = [], pointer }) {_defineProperty(this, "setCanvasSize",
() => {
const { innerWidth: w, innerHeight: h } = window;
const w2 = w * this.dpr;
const h2 = h * this.dpr;
this.canvas.width = w2;
this.canvas.height = h2;
this.canvas.style.width = w + 'px';
this.canvas.style.height = h + 'px';
this.bounds = new Bounds(0, 0, w2, h2);
});_defineProperty(this, "addEntity",
newEntity => {
this.entities = [...this.entities, newEntity];
return this.entities.length - 1;
});_defineProperty(this, "render",
() => {
// Main loop
// Draw and Update items here.
this.entities.forEach(({ draw, update }) => {
draw(this);
update(this);
});
++this.tick;
window.requestAnimationFrame(this.render);
}); // setup a canvas
this.canvas = canvas;this.dpr = window.devicePixelRatio || 1;this.ctx = canvas.getContext('2d');this.ctx.scale(this.dpr, this.dpr); // tick counter.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0