fabricjs 并未自带右击事件,因此可以通过 mouse:move 加上页面的右击事件来做
that.canvas.on(‘mouse:move’, (options) => {
if (!this.rightClick && !that.isDrawing && options.target) {
// 因为 fabricjs 没有右键事件
// 因此 通过监听 整个页面来实现右键事件
// 当鼠标滑动 到图形上时 记录当前对象,当右键点击时 将当前对象高亮
// 记录下当前划过的 图形
this.moveOption = options
}
// 当鼠标继续移动时 清除 右击状态
this.rightClick = false
})
监听页面右键事件 这里省略。。
rightClickFun(ev) {
if (this.moveOption && !this.rightClick) {
// // 右键点击前 如果之前右键点击过了,将之前点击的对象 的选中 框 四个角 显示出来
if (this.oldmoveOption) {
// this.oldmoveOption.target.set(‘backgroundColor’,’’)
}
// 重新渲染 所有 对象,目的是 设置当前选中的对象背景颜色为黑色, 目前未找到单独渲染某个 对象的 方法,就选择渲染所有了
this.canvas.renderAll()
// 将当前对象 储存为 old
this.oldmoveOption = this.moveOption
this.rightClick = true
console.log(‘evvvvv’, ev, this.oldmoveOption)
document.getElementById('fabriccontextMenu').style.left = ev.clientX + 'px'
document.getElementById('fabriccontextMenu').style.top = ev.clientY + 'px'
this.contextMenuShow = true
}
// 阻止 浏览器默认右击事件
ev.preventDefault()
},