最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Fabric.js?監(jiān)聽元素是否相交重疊

 更新時間:2023年02月14日 08:54:18   作者:德育處主任  
這篇文章主要為大家介紹了Fabric.js?監(jiān)聽元素是否相交重疊的方案示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

fabric.js 提供了一個方法可以檢查對象是否與另一個對象相交(也可以叫元素是否重疊)。

這個方法叫 intersectsWithObject()。

本文主要想提一下 fabric.js 存在這么一個方便的方法。

檢測元素是否相交有什么用呢?

這個功能在日常開發(fā)中其實很實用,在它的幫助下我們可以實現(xiàn)“防止對象碰撞”、“對象自動對齊貼合”等功能。

動手試試看

為了演示 intersectsWithObject() ,我打算做如下操作:

  • 創(chuàng)建畫布
  • 創(chuàng)建矩形、圓形、三角形元素,并將它們添加到畫布里
  • 使用 canvas.on('object:moving') 監(jiān)聽圖形元素移動
  • 元素移動的過程中不斷遍歷畫布當前所有元素,如果正在移動的元素和其他圖形相交了,就在控制臺輸出被相交的元素的類型。

在“第4點”里,使用了 intersectsWithObject() 方法判斷元素是否相交,如果相交就會返回 true。

詳情請看下方代碼及注釋。

<canvas id="c" width="500" height="500" style="border: 1px solid #ccc;"></canvas>
<script src="../js/fabric.js"></script>
<script>
  let canvas = new fabric.Canvas('c')
  // 矩形 - 亮粉色
  let rect = new fabric.Rect({
    left: 260,
    top: 110,
    width: 80,
    height: 60,
    fill: 'hotpink'
  })
  // 圓形 - 黃綠色
  let circle = new fabric.Circle({
    top: 200,
    left: 150,
    radius: 30,
    fill: 'yellowgreen'
  })
  // 三角形 - 天藍色
  let triangle = new fabric.Triangle({
    width: 100,
    height: 100,
    left: 300,
    top: 200,
    fill: 'skyblue'
  })
  // 將矩形、圓形、三角形添加到畫布中
  canvas.add(rect, circle, triangle)
  // 監(jiān)聽對象移動
  canvas.on('object:moving', function(options) {
    // 通過 canvas.forEachObject 遍歷畫布上所有元素
    canvas.forEachObject(function(obj) {
      // 排除當前正在移動的元素
      if (obj === options.target) return
      // 檢查對象是否與另一個對象相交
      if (options.target.intersectsWithObject(obj)) {
        // 輸出當前被接觸的對象類型
        console.log(obj.type)
      }
    })
  })
</script>

以上就是 intersectsWithObject() 的基本用法。

其實 intersectsWithObject() 可以傳入3個參數(shù),用法如下:

intersectsWithObject(other, absoluteopt, calculateopt)
  • other: Object類型,要檢測的對象
  • absoluteopt: Boolean類型,使用不帶 viewportTransform 的坐標
  • calculateopt: Boolean類型,使用當前位置的坐標代替

代碼倉庫

? intersectsWithObject檢測對象是否相交

以上就是Fabric.js 監(jiān)聽元素是否相交重疊的詳細內(nèi)容,更多關(guān)于Fabric.js 監(jiān)聽元素的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 定時器在頁面最小化時不執(zhí)行實現(xiàn)示例

    定時器在頁面最小化時不執(zhí)行實現(xiàn)示例

    這篇文章主要為大家介紹了定時器在頁面最小化時不執(zhí)行的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • javascript實現(xiàn)字典Dictionary示例基礎

    javascript實現(xiàn)字典Dictionary示例基礎

    這篇文章主要為大家介紹了javascript實現(xiàn)字典Dictionary基礎示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 微信小程序 教程之事件

    微信小程序 教程之事件

    這篇文章主要介紹了微信小程序 事件的相關(guān)資料,并附實例代碼,需要的朋友可以參考下
    2016-10-10
  • 前端自動化測試之Jest?進階教程示例

    前端自動化測試之Jest?進階教程示例

    這篇文章主要為大家介紹了前端自動化測試之Jest?進階教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Server-sent?events實時獲取服務端數(shù)據(jù)技術(shù)詳解

    Server-sent?events實時獲取服務端數(shù)據(jù)技術(shù)詳解

    這篇文章主要為大家介紹了Server-sent?events實時獲取服務端數(shù)據(jù)技術(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 最新評論

    铜陵市| 白玉县| 东兴市| 长治县| 中山市| 壤塘县| 汝南县| 八宿县| 周口市| 安泽县| 沈丘县| 绵竹市| 右玉县| 平邑县| 乳源| 炉霍县| 晋州市| 菏泽市| 克拉玛依市| 福泉市| 巴彦淖尔市| 沐川县| 麦盖提县| 章丘市| 乌兰浩特市| 井冈山市| 高州市| 潮州市| 苍溪县| 东安县| 长宁区| 敖汉旗| 柳河县| 灵石县| 腾冲县| 大悟县| 山东省| 镇康县| 惠东县| 永春县| 临泉县|