Two.js 的设计理念是提供一个简单、直观且灵活的 2D 绘图和动画工具。其核心设计理念包括:
可以通过 npm 或直接引入 CDN 链接来使用 Two.js:
npm install two.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/two.js/0.7.9/two.min.js"></script>
以下是一个基本的示例,展示了如何创建一个 Two.js 实例并绘制一个矩形:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Two.js Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/two.js/0.7.9/two.min.js"></script>
</head>
<body>
<div id="drawing"></div>
<script>
// 创建一个 Two.js 实例
const elem = document.getElementById('drawing');
const params = { width: 500, height: 500 };
const two = new Two(params).appendTo(elem);
// 创建一个矩形
const rect = two.makeRectangle(250, 250, 100, 100);
// 设置矩形属性
rect.fill = '#FF8000';
rect.stroke = 'orangered';
rect.linewidth = 5;
// 渲染绘图
two.update();
</script>
</body>
</html>
Two.js 提供了简单的动画支持,可以轻松创建动画效果。以下是一个简单的动画示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Two.js Animation Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/two.js/0.7.9/two.min.js"></script>
</head>
<body>
<div id="animation"></div>
<script>
const elem = document.getElementById('animation');
const params = { width: 500, height: 500 };
const two = new Two(params).appendTo(elem);
// 创建一个圆形
const circle = two.makeCircle(250, 250, 50);
circle.fill = '#FF8000';
circle.stroke = 'orangered';
circle.linewidth = 5;
// 添加动画
two.bind('update', function(frameCount) {
circle.rotation += 0.03;
}).play(); // 开始动画
</script>
</body>
</html>
Two.js 提供了丰富的向量图形操作,如路径、圆弧、多边形等,可以方便地进行复杂图形绘制。
// 创建一个路径
const path = two.makePath(50, 50, 150, 50, 100, 150);
// 设置路径属性
path.fill = 'none';
path.stroke = 'blue';
path.linewidth = 4;
// 更新绘图
two.update();
Two.js 支持鼠标和触摸事件,可以轻松实现交互功能。例如,可以为图形添加点击事件:
const rect = two.makeRectangle(250, 250, 100, 100);
rect._renderer.elem.addEventListener('click', function() {
alert('Rectangle clicked!');
});
two.update();
Two.js 支持插件系统,可以通过插件扩展 Two.js 的功能。例如,可以使用插件添加额外的绘图工具或动画效果。
// 自定义插件示例
Two.Utils.extend(Two.prototype, {
customFunction: function() {
console.log('Custom function called');
}
});
two.customFunction(); // 调用自定义插件功能