欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Fabric.js?樣式不更新解決方法案例

 更新時(shí)間:2023年02月14日 08:46:42   作者:德育處主任  
這篇文章主要為大家介紹了Fabric.js?樣式不更新解決方法案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

本文簡(jiǎn)介

不知道你有沒(méi)有遇到過(guò)在使用 Fabric.js 時(shí)無(wú)意中一些騷操作修改了元素的樣式,但刷新畫布卻沒(méi)更新元素樣式?

如果你也遇到同樣的問(wèn)題的話,可以嘗試使用本文的方法。

是否需要重新繪制

我先舉個(gè)例子。

<canvas id="c" style="border: 1px solid #ccc;"></canvas>
<script>
let canvas = new fabric.Canvas('c')
// 矩形 - 亮粉色
let rect = new fabric.Rect({
  left: 50,
  top: 30,
  width: 80,
  height: 60,
  fill: 'hotpink'
})
canvas.add(rect)
setTimeout(() => {
  console.log(rect.fill) // 輸出 'hotpink'
  rect.fill = 'red'
  console.log(rect.fill) // 輸出 'red'
  canvas.renderAll() // 刷新畫布
}, 1000)
</script>

在這個(gè)例子中,頁(yè)面運(yùn)行1秒后,我想通過(guò) rect.fill = 'red' 的方式將畫布中的矩形修改成紅色。

修改完成后在控制臺(tái)輸出當(dāng)前矩形的顏色,然后再通過(guò) canvas.renderAll() 的方式刷新畫布。

從控制臺(tái)輸出的數(shù)據(jù)來(lái)看,矩形確實(shí)是變紅了,但從視覺上看畫布中的矩形卻還是粉色。

其實(shí)正確的做法是使用 rect.set('fill', 'red') 去修改矩形顏色,set() 方法會(huì)通知畫布要刷新樣式。

但如果你堅(jiān)持使用 rect.fill = 'red' 的方式去修改也不是不行,此時(shí)需要將矩形的 statefullCache 設(shè)置為 true,矩形就會(huì)自動(dòng)檢測(cè)屬性的值的更新。

// 省略部分代碼
let rect = new fabric.Rect({
  left: 50,
  
  
  top: 30,
  width: 80,
  height: 60,
  fill: 'hotpink',
  statefullCache: true // 自動(dòng)檢測(cè)更新
})
canvas.add(rect)
setTimeout(() => {
  console.log(rect.fill) // 輸出 'hotpink'
  rect.fill = 'red'
  console.log(rect.fill) // 輸出 'red'
  canvas.renderAll()
}, 1000)

但并不是所有情況都適合將 statefullCache 設(shè)為 true。

官方文檔也有介紹到:

statefullCache: Boolean

When true, object properties are checked for cache invalidation. In some particular situation you may want this to be disabled ( spray brush, very big, groups) or if your application does not allow you to modify properties for groups child you want to disable it for groups. default to false since 1.7.0

說(shuō)了這么多,最后我還是推薦通過(guò) set() 方法修改元素的屬性。

代碼倉(cāng)庫(kù)

? 是否需要重新繪制緩存的副本

以上就是Fabric.js 樣式不更新解決方法案例的詳細(xì)內(nèi)容,更多關(guān)于Fabric.js 樣式更新的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序 教程之事件

    微信小程序 教程之事件

    這篇文章主要介紹了微信小程序 事件的相關(guān)資料,并附實(shí)例代碼,需要的朋友可以參考下
    2016-10-10
  • JS開發(fā) 富文本編輯器TinyMCE詳解

    JS開發(fā) 富文本編輯器TinyMCE詳解

    這篇文章主要介紹了Java開發(fā) 富文本編輯器TinyMCE詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 微信小程序 跳轉(zhuǎn)傳參數(shù)與傳對(duì)象詳解及實(shí)例代碼

    微信小程序 跳轉(zhuǎn)傳參數(shù)與傳對(duì)象詳解及實(shí)例代碼

    這篇文章主要介紹了微信小程序 跳轉(zhuǎn)傳參數(shù)與傳對(duì)象詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 微信小程序頁(yè)面間通信的5種方式

    微信小程序頁(yè)面間通信的5種方式

    這篇文章主要介紹了微信小程序頁(yè)面間通信的5種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • JavaScript 原型與原型鏈詳情

    JavaScript 原型與原型鏈詳情

    這篇文章主要介紹了JavaScript 原型與原型鏈,JavaScript常被描述為一種基于原型的語(yǔ)言,對(duì)象以其原型為模板、從原型繼承屬性和放法。原型對(duì)象也可能擁有原型,并從中繼承屬性和方法,一層一層以此類推。這種關(guān)系常被稱為原型鏈,帶著簡(jiǎn)單的了解看看下文內(nèi)容具體介紹吧
    2021-10-10
  • 原生js實(shí)現(xiàn)鼠標(biāo)滑過(guò)播放音符方法詳解

    原生js實(shí)現(xiàn)鼠標(biāo)滑過(guò)播放音符方法詳解

    本文使用原生js的AudioContext接口實(shí)現(xiàn)一個(gè)劃過(guò)菜單播放天空之城的鼠標(biāo)特效,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 微信小程序 密碼輸入(源碼下載)

    微信小程序 密碼輸入(源碼下載)

    這篇文章主要介紹了微信小程序 密碼輸入(源碼下載)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 微信小程序 網(wǎng)絡(luò)API 上傳、下載詳解

    微信小程序 網(wǎng)絡(luò)API 上傳、下載詳解

    這篇文章主要介紹了微信小程序 網(wǎng)絡(luò)API 上傳、下載詳解的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 微信小程序 詳解Page中data數(shù)據(jù)操作和函數(shù)調(diào)用

    微信小程序 詳解Page中data數(shù)據(jù)操作和函數(shù)調(diào)用

    這篇文章主要介紹了微信小程序 詳解Page中data數(shù)據(jù)操作和函數(shù)調(diào)用的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 詳解 TypeScript 枚舉類型

    詳解 TypeScript 枚舉類型

    這篇文章主要介紹了TypeScript 枚舉類型,TypeScript 在 ES 原有類型基礎(chǔ)上加入枚舉類型,使得在 TypeScript 中也可以給一組數(shù)值賦予名字,這樣對(duì)開發(fā)者比較友好,可以理解枚舉就是一個(gè)字典,文章內(nèi)容圍繞TypeScript 枚舉類型展開內(nèi)容,需要的朋友可以參考一下
    2021-10-10

最新評(píng)論