变换

文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用canvas怎么实现一个探照灯效果

2023-06-09 13:58

关注

这期内容当中小编将会给大家带来有关使用canvas怎么实现一个探照灯效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

</iframe><button id="btn">变换</button><button id="con">暂停</button><canvas id="canvas" width="400" height="290" style="border:1px solid black">当前浏览器不支持canvas,请更换浏览器后再试</canvas><script> btn.onclick = function(){history.go();}con.onclick = function(){ if(this.innerHTML == '暂停'){ this.innerHTML = '恢复';        clearInterval(oTimer);    }else{ this.innerHTML = '暂停';         oTimer = setInterval(fnInterval,50);    }} var canvas = document.getElementById('canvas'); //存储画布宽高var H=290,W=400; //存储探照灯var ball = {}; //存储照片var IMG; //存储照片地址var URL = 'https://file.lsjlt.com/upload/202306/07/5q02l4tztr1.jpg'; function initial(){ if(canvas.getContext){ var cxt = canvas.getContext('2d'); var tempR = Math.floor(Math.random()*30+20); var tempX = Math.floor(Math.random()*(W-tempR) + tempR); var tempY = Math.floor(Math.random()*(H-tempR) + tempR)                ball = {            x:tempX,            y:tempY,            r:tempR,            stepX:Math.floor(Math.random() * 21 -10),            stepY:Math.floor(Math.random() * 21 -10)        };        IMG = document.createElement('img');        IMG.src=URL;        IMG.onload = function(){            cxt.drawImage(IMG,0,0);      }//欢迎加入全栈开发交流圈一起学习交流:582735936    ]//面向1-3年前端人员  }   //帮助突破技术瓶颈,提升思维能力        }       }    } function update(){    ball.x += ball.stepX;    ball.y += ball.stepY;     bumpTest(ball);} function bumpTest(ele){ //左侧    if(ele.x <= ele.r){        ele.x = ele.r;        ele.stepX = -ele.stepX;    } //右侧    if(ele.x >= W - ele.r){        ele.x = W - ele.r;        ele.stepX = -ele.stepX;    } //上侧    if(ele.y <= ele.r){        ele.y = ele.r;        ele.stepY = -ele.stepY;    } //下侧    if(ele.y >= H - ele.r){        ele.y = H - ele.r;        ele.stepY = -ele.stepY;    }} function render(){ //重置画布高度,达到清空画布的效果 canvas.height = H; if(canvas.getContext){ var cxt = canvas.getContext('2d');        cxt.save(); //将画布背景涂黑 cxt.beginPath();        cxt.fillStyle = '#000';        cxt.fillRect(0,0,W,H); //渲染探照灯 cxt.beginPath();        cxt.arc(ball.x,ball.y,ball.r,0,2*Math.PI);        cxt.fillStyle = '#000';        cxt.fill();         cxt.clip(); //由于使用了clip(),画布背景图片会出现在clip()区域内 cxt.drawImage(IMG,0,0);        cxt.restore();      }//欢迎加入全栈开发交流圈一起学习交流:582735936    ]//面向1-3年前端人员  }   //帮助突破技术瓶颈,提升思维能力    }}initial();clearInterval(oTimer); function fnInterval(){ //更新运动状态 update(); //渲染 render();    } var oTimer = setInterval(fnInterval,50); </script>

上述就是小编为大家分享的使用canvas怎么实现一个探照灯效果了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯