绘制六芒星战斗力属性图 —— h5 canvas 初体验
2015-09-01 08:50
1096 查看
在黄金的沙滩上
安息着远古的悲剧
在深绿的波涌中
停着灵魂的船
——《眼睛》,顾城
![](https://img-blog.csdn.net/20150901085916076)
最近用MUI做Web app时想实现一个六芒星战斗力图的(类似LPL赛前战队实力分析图)效果,由于正多边形是十分规则的,所以感觉很轻易就可以用h5 canvas来实现,首先在
等待页面加载完毕后开始绘制。函数polygon传入几个参数:canvas对象,多边形边数,颜色渐变层数,各项能力值(数组),各项能力的名称(数组),调用polygon就能绘制出想要的能力属性图啦。
安息着远古的悲剧
在深绿的波涌中
停着灵魂的船
——《眼睛》,顾城
最近用MUI做Web app时想实现一个六芒星战斗力图的(类似LPL赛前战队实力分析图)效果,由于正多边形是十分规则的,所以感觉很轻易就可以用h5 canvas来实现,首先在
<body>里画一个canvas,
id="polygon"。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title></title> <script src="js/mui.min.js"></script> <link href="css/mui.min.css" rel="stylesheet"/> </head> <body> <canvas id="polygon">不支持canvas</canvas> </body>
等待页面加载完毕后开始绘制。函数polygon传入几个参数:canvas对象,多边形边数,颜色渐变层数,各项能力值(数组),各项能力的名称(数组),调用polygon就能绘制出想要的能力属性图啦。
<script type="text/javascript" charset="utf-8"> mui.ready(function(){ var hex = document.getElementById("polygon"); var ability_value = new Object; var ability_name = new Object; //设置能力值 ability_value[0] = 0.8; ability_value[1] = 0.5; ability_value[2] = 0.7; ability_value[3] = 0.6; ability_value[4] = 0.5; ability_value[5] = 0.7; //设置能力属性名 ability_name[0] = '物理'; ability_name[1] = '魔法'; ability_name[2] = '韧性'; ability_name[3] = '敏捷'; ability_name[4] = '防御'; ability_name[5] = '智力'; polygon(hex, 6, 6, ability_value, ability_name); }); //绘制多边形能力图 function polygon(obj, side, part, ability_value, ability_name) { var ability = obj.getContext('2d'); ability.canvas.width = window.innerWidth*0.7; ability.canvas.height = window.innerWidth*0.7; var width = obj.width; var height = obj.height; var xCenter = width * 0.5; var yCenter = height * 0.5; var radius = width * 0.3; var space = radius/part; var theta = Math.PI*2/side; //绘制渐变多边形底层 for (var j=part;j>=1;j--) { ability.beginPath(); for (var i=0; i<=side; i++) { ability.lineTo(Math.cos(i*theta)*space*j+xCenter,-Math.sin(i*theta)*space*j+yCenter); } var r=73, g=101,b=115; ability.fillStyle = "rgba("+73+","+101+","+115+"," + 0.4 + ")"; ability.fill(); ability.closePath(); } //绘制能力多边形 ability.beginPath(); for (var i=0; i<=side; i++) { var x = Math.cos(i*theta)*radius*ability_value[i%side]+xCenter; var y = -Math.sin(i*theta)*radius*ability_value[i%side]+yCenter; ability.lineTo(x,y); } ability.strokeStyle="rgba(255,255,96,1)"; ability.lineWidth = 4; ability.stroke(); ability.closePath(); //绘制字体 for (var i=0; i<side; i++) { ability.fillStyle="rgba(0,0,0,1)"; ability.font = "normal 15px Microsoft Yahei"; if (Math.cos(i*theta)*radius>0) { var x = Math.cos(i*theta)*radius+3+xCenter; var y = -Math.sin(i*theta)*radius*1.3+yCenter; } else { var x = Math.cos(i*theta)*radius*1.5+xCenter; var y = -Math.sin(i*theta)*radius*1.3+yCenter; } ability.fillText(ability_name[i],x,y); } } </script>
相关文章推荐
- HTML5中在客户端验证文件上传的大小
- 原生js结合html5制作小飞龙的简易跳球
- 三个不常见的 HTML5 实用新特性简介
- 低版本IE正常运行HTML5+CSS3网站的3种解决方案
- js+HTML5实现canvas多种颜色渐变效果的方法
- javascript+HTML5的Canvas实现Lab单车动画效果
- javascript+html5实现绘制圆环的方法
- HTML5实现微信拍摄上传照片功能
- jQuery+HTML5加入购物车代码分享
- 实现音乐播放器的代码(html5+css3+jquery)
- 2014 HTML5/CSS3热门动画特效TOP10
- jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
- HTML5使用DeviceOrientation实现摇一摇功能
- jquery+html5烂漫爱心表白动画代码分享
- spring+html5实现安全传输随机数字密码键盘
- html5在android中的使用问题及技巧解读
- 非html5实现js版弹球游戏示例代码
- 移动开发:Native、Hybrid与HTML5