我在保存和加载应用于对象的动态模式时遇到问题。
我在网上搜索了解决此问题的方法,但无济于事。我明白它为什么会发生,但不明白如何解决它。
这基本上就是我正在做的......
- 将动态模式应用于对象。
- 使用...'JSON.stringify(canvas.toJSON([...]))' 将画布保存到 MongoDB
- 使用“loadFromJSON”加载画布
- 收到错误“未捕获的 ReferenceError:patternSourceCanvas 未定义”
我在这个问题上发现的一切都可以追溯到至少 2 年前(有些甚至是 2013 年),没有可靠的代码示例。
更新
这是我用来在路径上应用模式的功能......
function applyPatternOnPath(p, image, width, patternRepeat, patternPadding) {
if (patternRepeat) {
var r = 'repeat'
} else {
var r = 'no-repeat'
}
fabric.Image.fromURL(image, function(img) {
var padding = 0 + patternPadding;
img.scaleToWidth(width);
var patternSourceCanvas = new fabric.StaticCanvas();
patternSourceCanvas.add(img);
patternSourceCanvas.renderAll();
var pattern = new fabric.Pattern({
source: function() {
patternSourceCanvas.setDimensions({
width: img.getScaledWidth() + padding,
height: img.getScaledHeight() + padding
});
patternSourceCanvas.renderAll();
return patternSourceCanvas.getElement();
},
repeat: r
});
p.set('fill', pattern);
canvas.renderAll();
}, { crossOrigin: 'Anonymous' });
}