你想往哪里走,在我的领域里你是跑不开我的指向的。详解编程语言
2023-06-13 09:20:36 时间
效果图:
代码如下,复制即可使用:
!DOCTYPE html html lang="en" head meta charset="UTF-8" title 你想往哪里走 /title /head body canvas id=canvas width="500" height="500" 你的浏览器不行啊~ /canvas !--箭头函数-- script function Arrow() { this.x = 0; //初始位置 this.y = 0; this.rotation = 0; //初始旋转角度 this.color = #ffff00; //在原型上定义draw方法 Arrow.prototype.draw = function(context) { context.save(); context.translate(this.x, this.y); //将坐标移到this.x 和 this.y context.rotate(this.rotation); //设置旋转角度 context.lineWidth = 5; //设置线宽 context.fillStyle = this.color; //设置填充色 context.beginPath(); //路径开始 context.moveTo(-50, -25); context.lineTo(0, -25); context.lineTo(0, -50); context.lineTo(50, 0); context.lineTo(0, 50); context.lineTo(0, 25); context.lineTo(-50, 25); context.closePath(); //路径闭合 context.stroke(); //描边 context.fill(); //填充 context.restore(); /script !-- 工具函数 -- script //将utils定义为window对象下的一个属性,属性值为对象 window.utils = {}; //在utils对象上定义捕获坐标的方法 window.utils.captureMouse = function(element) { //定义一个名为mouse的对象 var mouse = { x: 0, y: 0 //为元素绑定mousemove事件 element.addEventListener(mousemove, function(event) { var x, y; //获取鼠标位于当前屏幕的位置, 并作兼容处理 if (event.pageX || event.pageY) { x = event.pageX; y = event.pageY; } else { x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop; //将当前的坐标值减去元素的偏移位置,即为鼠标位于当前canvas的位置 x -= element.offsetLeft; y -= element.offsetTop; mouse.x = x; mouse.y = y; }, false); //返回值为mouse对象 return mouse; /script script window.onload = function(){ var canvas = document.getElementById(canvas); var context = canvas.getContext(2d); var centerX = canvas.width/2; var centerY = canvas.height/2; //传入canvas,获取鼠标在canvas上移动是的坐标 var mouse = utils.captureMouse(canvas); //新建一个arrow对象 var arrow = new Arrow(); //将arrow的坐标设置为canvas的中心 arrow.x = centerX; arrow.y = centerY; //动画循环函数 (function drawFrame(){ window.requestAnimationFrame(drawFrame,canvas); context.clearRect(0, 0, canvas.width, canvas.height); //获取dy,dx值 var dx = mouse.x - arrow.x, dy = mouse.y - arrow.y; //设置旋转角度 arrow.rotation = Math.atan2(dy, dx); //调用draw方法画出 arrow.draw(context); })(); /script /body /html
如果你有更好的点子、想法,可以跟大家一起分享哦,如有错误,欢迎联系我指正,非常感谢!!!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12318.html
cjava相关文章
- 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛「建议收藏」
- 调研表明只有13.5%的IT专业人员掌握云原生领域的安全性
- 分享5篇自动驾驶分割领域论文(附pdf下载)
- 盘点7大技术板块,洞察112个开源项目—— InfoQ 研究中心带你探秘中国云原生开源领域
- 什么是前端开发领域的 Cumulative Layout Shift 问题
- Drools 规则引擎—-向领域驱动进步(七)详解编程语言
- Drools 规则引擎—-向领域驱动进步(四)详解编程语言
- Drools 规则引擎—-向领域驱动进步(三)详解编程语言
- DR.WU达尔肤亮相中华医学会,展现焕肤领域专业实力
- 人工智能在深度学习领域的前世今生
- 【进入技术领域:CPU编译Linux操作系统】(CPU编译Linux)
- 周立功在Linux领域的成就(周立功 linux)
- 熟悉Redis,突破新技术领域(熟悉redis)
- 业务Oracle为何不投身金融领域(oracle为何不做金融)