【发布时间】:2018-02-23 03:19:11
【问题描述】:
我正在扩展fabric.js kitchensink 的一些功能。我尝试获取和设置活动对象的阴影属性但没有成功,但我确信我错过了一些微不足道的东西。这就是我在我的 controllers.js 中所做的:
在选定对象上设置/启用阴影:
$scope.shadowify = function () {
var obj = canvas.getActiveObject();
if (!obj) return;
if (obj.shadow) {
obj.shadow = null;
} else {
obj.setShadow({
color: "#000000",
blur: 10,
offsetX: 10,
offsetY: 10
});
}
canvas.renderAll();
};
这是有效的(就像在厨房水槽示例中所做的那样)
获取/设置阴影:
function getActiveShadow(name) {
var object = canvas.getActiveObject();
if (!object) return '';
return object[name] || '';
}
function setActiveShadow(name, value) {
var object = canvas.getActiveObject();
if (!object) return;
object.setShadow(name, value);
object.setCoords();
canvas.renderAll();
}
和:
$scope.setShadowOffsetX = function (value) {
setActiveShadow('offsetX', value);
canvas.renderAll();
};
$scope.setShadowOffsetY = function (value) {
setActiveShadow('offsetY', value);
canvas.renderAll();
};
$scope.setShadowBlur = function (value) {
setActiveShadow('blur', value);
canvas.renderAll();
};
$scope.setShadowColor = function (value) {
setActiveShadow('color', value);
canvas.renderAll();
console.log, (value);
};
这是我的 HTML 中的一些示例代码,用于将值绑定到输入:
<input type="color"
id="shadC"
value="#455A64"
class="small"
bind-value-to="shadowColor"
ng-model="shadC">
<input type="number"
class="small"
ng-value="10"
id="shadX"
skin="condensed"
bind-value-to="shadowOffsetX"
ng-model="offsetX">
不知道那里发生了什么——当我更改输入中的值时,整个阴影消失了。这种方法非常适用于宽度/高度等基本对象设置。所以我希望我做错了真的是微不足道的事情。
【问题讨论】:
-
你能创建一个 plnkr 或小提琴吗?
-
感谢您的编辑!会尝试把一些东西放在一起,但是只用请求的代码重做这个是相当复杂的,因为整个项目非常复杂。无论如何我都会尽力而为。
-
始终可以创建一个最小的 fiddle/plnkr 来重现您的问题。我们不需要你的整个项目来重现这个。
标签: javascript angularjs fabricjs