javascript - 论文js限制总路径长度

标签 javascript paperjs

我正在尝试使用 Paper Js 开发绘图功能,用户实际上用完了“墨水”。

有人知道怎么做吗?我研究了限制路径长度。但至关重要的是,我的用户不应受限于每个笔画的路径长度,而应受限于所有笔画的路径长度。想象一下,例如你只有 1 盎司墨水(或例如 10 英寸墨水)可用于整个绘图。

以下修改自 Paper js 教程,但还没有限制用户拥有的数字墨水量的功能。我是 js 编码的新手,所以任何帮助将不胜感激!

var myPath;

function onMouseDown(event) {
    myPath = new Path();
    myPath.strokeColor = 'black';
}

function onMouseDrag(event) {
    myPath.add(event.point);
}

function onMouseUp(event) {
    var line = new Path({
    });
    line.strokeColor = 'black';
}

最佳答案

这是一个简单的 sketch演示如何实现这一目标。
希望代码足够清晰,您可以理解它并使其适应您的特定用例。

// Cumulated length for all drawn paths over which drawing stops.
const MAX_LENGTH = 1500;

// Stores drawn paths.
let paths = [];
// Stores currently drawing path.
let currentPath;

// On mouse down...
function onMouseDown(event) {
    // ...if drawing is still allowed...
    if (maxLengthIsExceeded()) {
        return;
    }
    // ...create a new path...
    currentPath = new Path({
        segments: [event.point],
        strokeColor: 'black'
    });
    // ...and add it to the stack.
    paths.push(currentPath);
}

// On mouse drag...
function onMouseDrag(event) {
    // ...if drawing is still allowed...
    if (maxLengthIsExceeded()) {
        return;
    }
    // ...continue drawing the current path.
    currentPath.add(event.point);
}

// Checks whether cumulated paths length exceeds the limit.
function maxLengthIsExceeded() {
    const totalLength = paths.reduce((sum, path) => sum += path.length, 0);
    return totalLength > MAX_LENGTH;
}

关于javascript - 论文js限制总路径长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59728133/

相关文章:

javascript - Paper.js 加载图像和事件层

javascript - 为什么 Vue 在两个 react 性数据突变 super 接近时只会更新一次?

javascript - 使用java脚本在div中随机定位一个绝对元素

google-chrome - Chrome 开发者控制台无法运行 JS 循环

javascript - 将字符串转换为 JSON 对象以在 React.js 样式标签中使用 style={}

javascript - Paper.js 外部文件不会加载

javascript - 结束日期应大于 Yii Bootstrap datepickerRow 中的开始日期

javascript - 如何比较贝塞尔曲线的形状

javascript - paper.js + soundmanager 声音表示

javascript - 在 PaperJS 中缩放后重置形状大小的最有效方法是什么