我有一个由许多不透明度为0的圆环组成的画布。我想在I:时将其更改为1
- 单击圆
- 当鼠标按钮按下时(用光标)在圆圈上移动
Nr 1很容易。这个问题可以用画布来解决
但我不知道该如何解决第二个问题。以下是我的代码中的一些片段:
var mouseDown = 0;
document.body.onmousedown = function() {
mouseDown = 1;
}
document.body.onmouseup = function() {
mouseDown = 0;
}
canvas.on('mouse:move', function(options) {
if (mouseDown && options.target) {
options.target.set('opacity', 1)
canvas.renderAll()
}});
但是当按下鼠标按钮时,选项.target始终未定义
Object {target: undefined, e: MouseEvent}
我在FabricJS中使用typescript,遇到了同样的问题。我发现你可以使用canvas.findTarget方法让FabricJS为你做这件事。我相信您可以将其转换为相应的javascript。
canvas.on('mouse:move', (e) => {
var target = canvas.findTarget(<MouseEvent>(e.e), true);
}
我对Fabric.js不是很熟悉,所以可能有更好的解决方案,但我的看法是:
canvas.on('mouse:move',function(options){
var pt = { x: options.e.clientX, y: options.e.clientY };
if( circle.containsPoint(pt) ) {
if( !circle.mouseOver ) {
circle.mouseOver = true;
console.log( 'over circle, yo' );
circle.set('opacity', 0.5);
canvas.renderAll();
}
} else if( circle.mouseOver ) {
circle.mouseOver = false;
circle.set('opacity', 1.0);
canvas.renderAll();
}
});
基本上,我们要做所有繁重的工作,看看我们是否在感兴趣的对象上,并在第一次鼠标悬停在它上面时更改它的属性,然后在鼠标离开它时再次更改。您可以将其与mouseDown
变量结合起来,只在鼠标放下时执行这些操作。
你可以在这里看到我的解决方案:
http://jsfiddle.net/qwpB3/