Fabric.js 鼠标右键单击

2024-04-04

有没有办法在 Fabric.js 画布上接收右键单击鼠标事件?

以下代码仅适用于左键单击:

canvas.observe('mouse:down', function(){console.log('mouse down'));

NOTE: 上面的大多数答案都已经过时了;此答案适用于最新的 Fabric 版本 2.7.0


只需为您的 Fabric 画布启用右键/中键单击事​​件

可以找到在画布中触发右键单击和中键单击事​​件的配置这里是为了fireRightClick https://github.com/fabricjs/fabric.js/blob/master/src/canvas.class.js#L327 and 这里是为了fireMiddleClick https://github.com/fabricjs/fabric.js/blob/master/src/canvas.class.js#L335并设置为false默认情况下。这意味着默认情况下禁用右键和中键单击事​​件。 参数stopContextMenu可以找到右键单击时停止上下文菜单显示在画布上的方法here https://github.com/fabricjs/fabric.js/blob/master/src/canvas.class.js#L319

您只需在创建画布时设置值即可启用这些:

var canvas = new fabric.Canvas('canvas', {
  height: height,
  width: width,
  fireRightClick: true,  // <-- enable firing of right click events
  fireMiddleClick: true, // <-- enable firing of middle click events
  stopContextMenu: true, // <--  prevent context menu from showing
});

现在你的mousedown所有点击都会触发事件,您可以通过使用事件上的按钮标识符来区分它们:

对于画布:

canvas.on('mouse:down', (event) => {
    if(event.button === 1) {
        console.log("left click");
    }
    if(event.button === 2) {
        console.log("middle click");
    }
    if(event.button === 3) {
        console.log("right click");
    }
}

对于对象:

object.on('mousedown', (event) => {
    if(event.button === 1) {
        console.log("left click");
    }
    if(event.button === 2) {
        console.log("middle click");
    }
    if(event.button === 3) {
        console.log("right click");
    }
}

当点击对象时,你可以通过 event.e 到达“真正的”鼠标 dom 事件:

if(event.button === 3){
  console.log(event.e);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fabric.js 鼠标右键单击 的相关文章

随机推荐

  • google play 如何捕获我们手机上的异常?

    我想知道 Google Play 如何能够捕获其应用程序中发生的错误列表并将其显示给开发人员 背景 我们正在尝试复制像谷歌商店这样的应用程序 我们应该通过我们的应用程序维护一个企业应用程序列表 我们希望通过我们的应用程序实现一个异常捕获框架
  • Excel VBA 不会保留前导零

    我似乎无法找到一种方法来保存 VBA 代码中的前导零 这些零是必需的 因为它们对应于唯一的 ID 我尝试在 excel 中将数字格式更改为文本和 0000 并在我的实际代码中采用相同的方法 ActiveSheet Cells i j Num
  • Docker-machine Google (GCE) 驱动程序无法工作,无法创建实例

    好吧 这很容易重现 但令人难以置信的令人沮丧 将非常感谢任何帮助或建议 我正在使用 Docker for Mac 在 OS X El Capitan 10 11 6 上运行 要点是 Docker 似乎无法通过 Docker GCE 驱动程序
  • 哪些 clang-tidy 检查提供自动修复?

    我想找出哪些 clang tidy 检查可以使用 fix 选项运行 即自动生成固定代码 我知道所有的 Modernize 检查都可以做到这一点 其他一些检查也可以 比如 google readability casting 但我没有找到完整
  • Html5 视频和 Flash 方法

    研究 HTML5 视频标签 并研究哪些浏览器支持哪些视频文件类型 我最初的想法是事情变得比仅仅使用 Flash 更困难 我想知道是否有人已经找到一些骨架代码 与视频的开发方法相结合 来执行以下操作 如果闪光灯可用 请使用它 如果没有 请尝试
  • SimpleITK 体积数据旋转(例如 MRI)

    我有一个 32x32x3 高度 宽度 深度 的图像 我试图在 satk 中围绕 z 轴旋转 45 度 然而 我要旋转的 z 深度轴似乎是成一定角度的 如何旋转图像 以便在查看图像的一个切片时 我会看到该切片从中心旋转 45 度 下面是我的代
  • 从外部文件加载配置的最佳 PySpark 实践是什么

    我想初始化配置一次 然后在我的 PySpark 项目的许多模块中使用它 我看到有两种方法可以做到这一点 将其加载到入口点并作为参数传递给每个函数 main py with open sys argv 1 as f config json l
  • 如何根据标志启用/禁用 selectManyCheckbox 中的项目

    我需要您的帮助来禁用和启用项目selectManyCheckboxjsf 页面中的组件 首先 selectManyCheckbox 组件显示三个复选框 分别是 Loan Health Transfer 该列表将从具有以下代码的 bean 中
  • 如何在 PHP 中循环 JSON 对象值?

    我有一个 JSON 对象 我想循环遍历这些值 json 1 a 2 b 3 c 4 d 5 e obj json decode json TRUE for i 0 i
  • 如何在 EditText 中设置最小文本(强制)和最大文本

    In my EditText字段 我想给一些最小文本作为强制 最大文本作为限制 有什么方法可以实现这一点吗 如果要输入文本 则数字计数必须减少 我该怎么做呢
  • 将自定义 CSS 传递给 Polymer 元素

    我希望能够通过CSSwidth到我的自定义元素 Shadow DOM 自定义元素称为my list 定义如下
  • 使用 Jest 和 Redux 的异步组件快照

    我发现 Jest 在测试我的 Redux React 应用程序时非常有用 然而 有很多关于如何测试异步操作创建器的示例 但我无法真正弄清楚如何对异步组件进行快照 我想做的是类似的事情Facebook 自己的教程中的悬停链接示例 https
  • Rebus 如何与 Azure 服务总线主题配合使用?

    我是 Rebus 和 Azure 服务总线的新手 想了解 Rebus 如何与 Azure 服务总线主题和队列配合使用 我已经成功地让 Rebus 与 ASB 合作 但对幕后发生的事情有点困惑 我有一个 ASP NET Core 应用程序 它
  • Excel VB 打开文件 OSX 和 Windows

    我有一个电子表格 它使用一些基本代码来让用户选择一个文件 txt 文件 它在 Windows 上完美运行 但在 OSX 上显然由于 FileDialog 调用的差异而失败 我已经做了一些研究 但似乎找不到太多有关在 OSX 和 Window
  • Verilog 中的 If 语句和分配连线

    我试图弄清楚基于组合逻辑分配电线的基础知识 I have wire val wire x wire a wire b always begin if val 00 I want to assign x a if val 01 I want
  • Webservice方法返回XmlDocument,Reference看到一个XmlNode

    我遇到了一个无法解决的问题 所以我请求你帮助我 我正在使用 WebService 并尝试从名为 GetSystemDocument 的 WebService 方法返回 XmlDocument 该方法如下所示 WebMethod Descri
  • 当overflow-x:hidden时禁用鼠标滚动[CSS,HTML]

    问题 我的 div 的内容定位为 绝对 并且内容的宽度大于 div 根据需要 使用 overflow x hidden 剪辑 额外 内容 不过 如果我尝试使用鼠标滚动进行水平滚动 内容就会变得可见 我怎样才能不让这种事发生呢 我可以使用 J
  • While 循环不运行indexOf 搜索

    我试图找出一个字符串在另一个字符串中出现了多少次 在我的测试中 我对第一个单词使用 ea 对第二个单词使用 Ilikedthebestontheeastbeachleast 我的输出为 appearance 变量返回 0 该变量应该存储 e
  • 如何在 SwiftUI 中删除 List 和 ScrollView 的底部填充

    我想删除底部填充 即红色空间之间的空白 有什么办法可以实现吗 测试代码 struct ContentView View var body some View return NavigationView VStack the same res
  • Fabric.js 鼠标右键单击

    有没有办法在 Fabric js 画布上接收右键单击鼠标事件 以下代码仅适用于左键单击 canvas observe mouse down function console log mouse down NOTE 上面的大多数答案都已经过时