html5 canvas实现跟随鼠标旋转的箭头
发布时间:2016-03-11 09:20:30 作者:Jone_chen 我要评论
这篇文章主要为大家详细介绍了html5 canvas实现跟随鼠标旋转的箭头,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了
XML/HTML Code复制内容到剪贴板
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <title>canvas实现跟随鼠标旋转的箭头</title>
- <style>
- *{padding: 0;margin: 0}
- </style>
- </head>
- <body>
- <canvas width="500" height="500" style="border: 1px solid #555; display: block;margin: 0 auto;"></canvas>
- <script>
- var arrow=function () {
- this.x=0;
- this.y=0;
- this.color="#f90"
- this.rolation=0;
- }
- var canvas=document.querySelector('canvas')
- var ctx=canvas.getContext('2d');
- arrow.prototype.draw=function (ctx) {
- ctx.save();
- ctx.translate(this.x,this.y);
- ctx.rotate(this.rolation)
- ctx.fillStyle=this.color;
- ctx.beginPath();
- ctx.moveTo(0, 15);
- ctx.lineTo(-50, 15);
- ctx.lineTo(-50, -15);
- ctx.lineTo(0,-15);
- ctx.lineTo(0,-35);
- ctx.lineTo(50,0);
- ctx.lineTo(0,35);
- ctx.closePath()
- ctx.fill();
- ctx.restore();
- }
- var Arrow=new arrow();
- Arrow.x=canvas.width/2;
- Arrow.y=canvas.height/2;
- var c_x,c_y; //相对于canvas坐标的位置;
- var isMouseDown=false;
- Arrow.draw(ctx)
- canvas.addEventListener('mousedown',function(e) {
- isMouseDown=true;
- },false)
- canvas.addEventListener('mousemove',function(e) {
- if(isMouseDown==true){
- c_x=getPos(e).x-canvas.offsetLeft;
- c_y=getPos(e).y-canvas.offsetTop;
- //setInterval(drawFram,1000/60)
- requestAnimationFrame(drawFram)
- }
- },false)
- canvas.addEventListener('mouseup',function(e) {
- isMouseDown=false;
- },false)
- function drawFram(){
- var dx=c_x-Arrow.x;
- var dy=c_y-Arrow.y;
- Arrow.rolation=Math.atan2(dy,dx);
- ctx.clearRect(0,0,canvas.width,canvas.height);
- Arrow.draw(ctx)
- }
- function getPos(e) {
- var mouse={x:0,y:0}
- var ee=e||event;
- if(e.pageX||e.pageY){
- mouse.x=e.pageX;
- mouse.y=e.pageY;
- }else{
- mouse.x=e.pageX+document.body.scrollLeft+document.document.documentElement.scrollLeft;
- mouse.y=e.pageY+document.body.scrollTop+document.document.documentElement.scrollTop;
- }
- return mouse;
- }
- </script>
- </body>
- </html>
DEMO地址:http://codepen.io/jonechen/pen/eZpgWd
不废话,直接上DEMO了,这个效果实现起来并不复杂,但是麻雀随小,五脏俱全,主要涉及到的知识点有:
1、canvas的基本绘图;
2、js各个事件的监听;
3、js动画;
4、三角函数结合js在canvas中的基本应用;
以上就是本文的全部内容,希望对大家的学习有所帮助。
原文:http://www.cnblogs.com/jone-chen/p/5243439.html
相关文章
html5 canvas实现的鼠标响应式树叶光标跟随动画特效源码
这是一款基于html5 canvas实现的鼠标响应式树叶光标跟随动画特效源码。画面上由无数粒子组成的树叶图形呈现出分散开来并跟随鼠标移动的动画效果,当点击鼠标时,分散的树叶2017-11-10- 这是一款基于html5 canvas实现跟随鼠标移动的黑洞动画特效源码。画面上黑色星空背景下,代表形体的白色圆点逐步由慢到快的向着鼠标光标所在处的黑色圆点汇聚并消失,呈现出2017-08-21
html5 canvas实现的点击跟随鼠标移动光线动画特效源码
这是一款基于html5 canvas实现的点击跟随鼠标移动光线动画特效源码。鼠标点击页面上可呈现出带有圆点连线到光点的运动状态动画效果,且光点的移动围绕着鼠标位置运动。2017-06-05- 这是一款基于html5 canvas实现的跟随鼠标光标动画特效源码。共有10种不同的光标跟随动画供用户选择使用。用户只需点击相应的按钮即可实现光标跟随特效的切换2017-04-17
- 这是一款基于html5 canvas实现的跟随鼠标刮风下雨动画特效源码。左右移动鼠标可见掉落的雨滴随着鼠标移动的方向而改变掉落方向,呈现出鼠标左右滑动控制风向的效果。雨滴落2016-06-01
- 纸飞机跟随鼠标飞行特效源码是一款基于html5 canvas和js制作的纸飞机跟随鼠标飞行动画效果的代码。鼠标移动越大,飞行速度越快2016-02-26
- 这篇文章主要介绍了ES6与canvas实现鼠标小球跟随效果的相关资料,需要的朋友可以参考下2018-02-11
最新评论