濮阳杆衣贸易有限公司

主頁 > 知識庫 > 用canvas做一個(gè)DVD待機(jī)動畫的實(shí)現(xiàn)代碼

用canvas做一個(gè)DVD待機(jī)動畫的實(shí)現(xiàn)代碼

熱門標(biāo)簽:ok電銷機(jī)器人 高德地圖標(biāo)注商戶怎么標(biāo) 黃石ai電銷機(jī)器人呼叫中心 地圖標(biāo)注軟件打印出來 電話機(jī)器人技術(shù) 欣鼎電銷機(jī)器人 效果 如何查看地圖標(biāo)注 智能電銷機(jī)器人被禁用了么 惡搞電話機(jī)器人

免責(zé)聲明

不是打算教 canvas,只是覺得好玩就簡單看了一下。

意思就是做得略粗糙,別噴我。。

效果

幀數(shù)略低,實(shí)際當(dāng)然流暢得多。

 

實(shí)現(xiàn) HTML

<!DOCTYPE html>
<head>
  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <style>
    * {margin: 0;padding: 0;}
    body {background-color: lightblue;}
    #canvas {background-color: black;width: 100vw;}
  </style>
</head>
<body>
  <canvas id="canvas"></canvas>
  <script>/* 見下 */</script>
</body>

JS

window.onload = function () {
  let
    // 畫布
    ctx = document.getElementById('canvas').getContext('2d'),
    // 畫布大小
    canvas_width = document.getElementById('canvas').width,
    canvas_height = document.getElementById('canvas').height,
    // DVD 圖標(biāo)的文本顏色、字體、背景色
    text_color = ['green', 'blue', 'purple', 'yellow', 'white', 'yellow', 'white'],
    text_font = 'italic bold 50px yahei',
    background_color = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'],
    // 背景矩形的尺寸
    background_width = 110,
    background_height = 50,
    // 向矩形添加文本時(shí),高度有點(diǎn)偏差
    fix_height = 7,
    // 速度,每次重繪移動 0.5 px
    speed_x = 0.5,
    speed_y = 0.5,
    // 移動方向,初始為 'r-b' 右下
    direction = 'r-b',
    // 圖標(biāo) x 和 y 坐標(biāo),初始為 0
    position_x = 0,
    position_y = 0,
    // 碰撞次數(shù),用來計(jì)算背景和文本顏色
    count = 0

  dvd()

  function dvd() {
    // 移動方向
    switch (direction) {
      // 右下
      case 'r-b':
        position_x += speed_x
        position_y += speed_y
        break
      // 右上
      case 'r-t':
        position_x += speed_x
        position_y -= speed_y
        break
      // 左下
      case 'l-b':
        position_x -= speed_x
        position_y += speed_y
        break
      // 左上
      case 'l-t':
        position_x -= speed_x
        position_y -= speed_y
        break
    }
    // 清空畫布
    ctx.clearRect(0, 0, canvas_width, canvas_height)
    // 重繪
    ctx.fillRect(position_x, position_y, background_width, background_height)
    // 碰撞檢測
    // 底
    if (position_y + background_height >= canvas_height) {
      direction = direction.replace('b', 't')
      // 碰撞次數(shù)統(tǒng)計(jì)
      count += 1
    }
    // 右
    if (position_x + background_width >= canvas_width) {
      direction = direction.replace('r', 'l')
      count += 1
    }
    // 左
    if (position_x < 0) {
      direction = direction.replace('l', 'r')
      count += 1
    }
    // 上
    if (position_y < 0) {
      direction = direction.replace('t', 'b')
      count += 1
    }
    // 文本
    ctx.font = text_font
    ctx.fillStyle = text_color[count % 7]
    ctx.fillText("DVD", position_x, position_y + background_height - fix_height)
    // 背景色
    ctx.fillStyle = background_color[count % 7]
    // 開始動畫
    window.requestAnimationFrame(dvd)
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:聊城 萍鄉(xiāng) 赤峰 中山 綏化 阿壩 金昌 盤錦

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用canvas做一個(gè)DVD待機(jī)動畫的實(shí)現(xiàn)代碼》,本文關(guān)鍵詞  用,canvas,做,一個(gè),DVD,待,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用canvas做一個(gè)DVD待機(jī)動畫的實(shí)現(xiàn)代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于用canvas做一個(gè)DVD待機(jī)動畫的實(shí)現(xiàn)代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    永康市| 临沂市| 依安县| 儋州市| 镇康县| 奇台县| 泽州县| 墨脱县| 保康县| 永定县| 高阳县| 淳化县| 竹溪县| 手机| 惠来县| 额济纳旗| 海南省| 达拉特旗| 竹溪县| 于田县| 阿拉善右旗| 吴桥县| 肇源县| 佛山市| 商洛市| 莆田市| 泌阳县| 淅川县| 远安县| 炉霍县| 错那县| 眉山市| 高陵县| 舞钢市| 洪湖市| 横峰县| 门头沟区| 保康县| 黄陵县| 朔州市| 塔河县|