Fabric.js 刪除元素(帶過(guò)渡動(dòng)畫(huà))

本文簡(jiǎn)介

Fabric.js 提供了2個(gè)方法刪除對(duì)象。

一個(gè)是 直接刪除糯彬,另一個(gè)方法是 帶過(guò)渡動(dòng)畫(huà) 刪除元素(淡出動(dòng)畫(huà))纽乱。

本文重點(diǎn)講 帶過(guò)渡動(dòng)畫(huà) 刪除元素的方法,還會(huì)講到設(shè)置 過(guò)渡時(shí)長(zhǎng) 掀亥、刪除后的 回調(diào)函數(shù) 等知識(shí)點(diǎn)撞反。

01.gif



相關(guān)API

刪除元素的2種方法:

  • canvas.remove(...object)
  • canvas.fxRemove(object, callbacksopt)

設(shè)置動(dòng)畫(huà)時(shí)長(zhǎng):

  • canvas.FX_DURATION


canvas.remove

remove 很好理解,就是刪除的意思搪花。里面?zhèn)魅朐貙?duì)象即可遏片。

canvas.remove(object)

canvas.renderOnAddRemovetrue 的情況下,使用 canvas.remove 刪除元素后撮竿,畫(huà)布會(huì)自動(dòng)刷新吮便。

canvas.renderOnAddRemove 默認(rèn)值是 true


如果 canvas.renderOnAddRemove = false ,使用 canvas.remove 后幢踏,元素是刪除了髓需,但畫(huà)布上還能看到元素。

此時(shí)需要手動(dòng)執(zhí)行 canvas.renderAll() 或者其他刷新方法房蝉,剛剛被刪的元素才會(huì)從畫(huà)布上(視覺(jué)上)消失授账。


canvas.fxRemove

fxRemove 是一個(gè)帶過(guò)渡動(dòng)畫(huà)的刪除方法枯跑,使用該方法刪除的對(duì)象會(huì)淡出,直至消失白热。

這個(gè)方法 第一個(gè)參數(shù) 是要?jiǎng)h除的對(duì)象敛助;

第二個(gè)參數(shù) 是回調(diào)對(duì)象,這個(gè)對(duì)象里有2個(gè)值屋确,是類(lèi)型函數(shù)纳击。

分別是 onChangeonComplete

  • onChange :在動(dòng)畫(huà)的每一步調(diào)用

  • onComplete:刪除成功后調(diào)用


canvas.fxRemove(object, {
  onChange() {
    console.log('在動(dòng)畫(huà)的每一幀調(diào)用')
  },
  onComplete() {
    console.log('刪除成功后調(diào)用')
  }
})


canvas.FX_DURATION

canvas.FX_DURATION 可以設(shè)置過(guò)渡動(dòng)畫(huà)的時(shí)長(zhǎng)攻臀。

默認(rèn)值是 500焕数,單位是 毫秒

canvas.FX_DURATION = 1500


修改后 canvas.FX_DURATION 后,再試試 canvas.fxRemove 刨啸,刪除元素的過(guò)渡時(shí)長(zhǎng)就是你設(shè)置的時(shí)長(zhǎng)堡赔。



示例代碼

01.gif
<div class="btn-x">
  <button onclick="delCircle()">刪除元素(圓型)</button>
  <button onclick="delRect()">帶動(dòng)畫(huà)刪除元素(方形)</button>
</div>
<canvas id="canvasBox" width="600" height="600"></canvas>
  
<script src="https://cdn.bootcdn.net/ajax/libs/fabric.js/460/fabric.min.js"></script>
<script>
  let canvas = null
  let circle = null
  let rect = null

  window.onload = function() {
    // 使用 元素id 創(chuàng)建畫(huà)布,此時(shí)可以在畫(huà)布上框選
    canvas = new fabric.Canvas('canvasBox', {
      width: 400,
      height: 400
    })

    // 圓形
    circle = new fabric.Circle({
      name: 'circle',
      top: 60,
      left: 60,
      radius: 30, // 圓的半徑 30
      fill: 'yellowgreen'
    })

    // 矩形
    rect = new fabric.Rect({
      name: 'rect',
      top: 60, // 距離容器頂部 60px
      left: 200, // 距離容器左側(cè) 200px
      fill: 'orange', // 填充a 橙色
      width: 60, // 寬度 60px
      height: 60 // 高度 60px
    })
    
    // 將矩形添加到畫(huà)布中
    canvas.add(circle, rect)
  }

  // 刪除圓形(沒(méi)動(dòng)畫(huà))
  function delCircle() {
    canvas.remove(circle)
  }

  // 刪除矩形(有動(dòng)畫(huà))
  function delRect() {
    canvas.FX_DURATION = 1500 // 設(shè)置動(dòng)畫(huà)時(shí)長(zhǎng)设联,默認(rèn)500毫秒

    canvas.fxRemove(rect, {
      onChange() {
        console.log('在動(dòng)畫(huà)的每一步調(diào)用')
      },
      onComplete() {
        console.log('刪除成功后調(diào)用')
      }
    })
  }
</script>



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



推薦閱讀

?《Fabric.js 將本地圖像上傳到畫(huà)布背景》

?《Fabric.js 從入門(mén)到膨脹》

《Fabric.js 漸變效果(包括徑向漸變)》

《Fabric.js 3個(gè)api設(shè)置畫(huà)布寬高》

?《Fabric.js 自定義右鍵菜單》

《Fabric.js 更換圖片的3種方法(包括更換分組內(nèi)的圖片善已,以及存在緩存的情況)》


如果本文內(nèi)容對(duì)你有所幫助,也請(qǐng)你幫我點(diǎn)個(gè)贊唄 ??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末离例,一起剝皮案震驚了整個(gè)濱河市换团,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宫蛆,老刑警劉巖艘包,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耀盗,居然都是意外死亡想虎,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)叛拷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)磷醋,“玉大人,你說(shuō)我怎么就攤上這事胡诗。” “怎么了淌友?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵煌恢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我震庭,道長(zhǎng)瑰抵,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任器联,我火速辦了婚禮二汛,結(jié)果婚禮上婿崭,老公的妹妹穿的比我還像新娘。我一直安慰自己肴颊,他們只是感情好氓栈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著婿着,像睡著了一般授瘦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竟宋,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天提完,我揣著相機(jī)與錄音,去河邊找鬼丘侠。 笑死徒欣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜗字。 我是一名探鬼主播打肝,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼秽澳!你這毒婦竟也來(lái)了闯睹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤担神,失蹤者是張志新(化名)和其女友劉穎楼吃,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體妄讯,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孩锡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亥贸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躬窜。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖炕置,靈堂內(nèi)的尸體忽然破棺而出荣挨,到底是詐尸還是另有隱情,我是刑警寧澤朴摊,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布默垄,位于F島的核電站,受9級(jí)特大地震影響甚纲,放射性物質(zhì)發(fā)生泄漏口锭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一介杆、第九天 我趴在偏房一處隱蔽的房頂上張望鹃操。 院中可真熱鬧韭寸,春花似錦、人聲如沸荆隘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)臭胜。三九已至莫其,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耸三,已是汗流浹背乱陡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仪壮,地道東北人憨颠。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像积锅,于是被迫代替她去往敵國(guó)和親爽彤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容