【发布时间】:2016-11-22 13:16:52
【问题描述】:
我试图在 2 种情况下更改对象的颜色: 在 mouse:over 事件和选择之后。
如果发生 mouse:out 事件或取消选择,颜色应重新变为原来的颜色。
为此,我编写了两个函数:一个用于更改颜色,一个用于将其更改回原来的颜色,它适用于 mouse:out 和 mouse:over 很好,但是当一个对象被选中时,重新更改将不起作用.
这是一个关于 jsfiddle 的简单示例:http://jsfiddle.net/98cuf9b7/25/
我在这个例子中的代码:
/*_____________Event Handling_______________*/
canvas.on('object:selected', function(event) {
changeSelectedObjectColorOpacity(event.target);
});
canvas.on('mouse:over', function(event) {
changeSelectedObjectColorOpacity(event.target);
});
canvas.on('mouse:out', function(event) {
revertObjectColorOpacity(event.target);
});
canvas.on('selection:cleared', function(event) {
revertObjectColorOpacity(event.target);
});
/*_________Change Color function_____________*/
var selected_fill_color = 'grey';
var selected_object_opacity = 0.5;
function changeSelectedObjectColorOpacity(object) {
if (object == null) { return;}
original_fill_color = object.fill;
original_opacity = object.opacity;
object.set({fill: selected_fill_color, opacity: selected_object_opacity});
canvas.renderAll();
}
function revertObjectColorOpacity(object) {
if (object == null) { return;}
object.set({fill: original_fill_color, opacity: original_opacity});
canvas.renderAll();
}
有没有办法用两个函数来解决这个问题,还是我必须为 mouserOver/MouseOut 和 Select/Deselect 编写一个包含其他变量的单独函数?
【问题讨论】:
标签: javascript frontend fabricjs