自己用h5写的转盘。写贴上来吧。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="canvas">你的浏览器版本太低不支持HTML5</canvas>
<script> function turnTable(R,r,length){
//这四行都是获取canvas环境的。
var canvas=document.getElementById("canvas");
canvas.width=2*R;
canvas.height=2*R;
var context=canvas.getContext("2d"); //这个是参数,很重要的参数。错了一个就死翘翘了。
// var value_x=[1,Math.sqrt(2),0,-Math.sqrt(2),-1,-Math.sqrt(2),0,Math.sqrt(2)]
// var value_y=[0,Math.sqrt(2),1,Math.sqrt(2),0,-Math.sqrt(2),-1,-Math.sqrt(2)]
//上面的参数是用枚举法表示x,y的坐标。当时忘了可以用三角函数表示圆的每个点的坐标。
//translate是变换,把转盘移到中间。
context.translate(R,R)
//绘制转盘路径并画出来。
for(var i=0;i<length;i++) {
//设置每块的颜色。这个可以去掉,只是为了区分
var RIGOU=Math.round(Math.random()*255)
var G=Math.round(Math.random()*255)
var B=Math.round(Math.random()*255)
var color="rgba("+RIGOU+","+G+","+B+",0.9)"
//这里是换算为弧度制计算,rad是起始弧度,nextRad是终止弧度。
var everyRad=(2*Math.PI)/length
var rad=everyRad*i
var nextRad=everyRad*(i+1) context.beginPath()
//绘制路径。最难搞的东西。
context.lineTo(r*Math.cos(rad), r*Math.sin(rad))
context.lineTo(R*Math.cos(rad), R*Math.sin(rad))
context.arc(0, 0, R, rad, nextRad, false)
context.lineTo(r*Math.cos(nextRad), r*Math.sin(nextRad))
context.arc(0, 0, r, nextRad, rad, true)
context.closePath()
//填充路径颜色
context.fillStyle = color
context.fill()
}
}
//调用函数。第一个参数是外圆半径,第二个是小圆半径。同时canvas画布的大小是根据外圆半径而设定。
turnTable(300,80,10) </script>
</body>
</html>
上面的是转盘的代码。接下来这个是有空隙的转盘代码。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="canvas">你的浏览器版本太低不支持HTML5</canvas>
<script> function turnTable(R,r,length){
//这四行都是获取canvas环境的。
var canvas=document.getElementById("canvas");
canvas.width=2*R;
canvas.height=2*R;
var context=canvas.getContext("2d"); //这个是参数,很重要的参数。错了一个就死翘翘了。
// var value_x=[1,Math.sqrt(2),0,-Math.sqrt(2),-1,-Math.sqrt(2),0,Math.sqrt(2)]
// var value_y=[0,Math.sqrt(2),1,Math.sqrt(2),0,-Math.sqrt(2),-1,-Math.sqrt(2)]
//上面的参数是用枚举法表示x,y的坐标。当时忘了可以用三角函数表示圆的每个点的坐标。
//translate是变换,把转盘移到中间。
context.translate(R,R)
context.scale(0.5,0.5)
//绘制转盘路径并画出来。
var flag=0
for(var i=0;i<length;i++) { //这里是换算为弧度制计算,rad是起始弧度,nextRad是终止弧度。
var everyRad=(2*Math.PI-1)/length var rad=(everyRad)*i+0.1*flag
flag++
var nextRad=(everyRad)*(i+1)+0.1*flag
flag++
context.beginPath()
//绘制路径。最难搞的东西。
context.moveTo(r*Math.cos(rad), r*Math.sin(rad))
context.lineTo(R*Math.cos(rad), R*Math.sin(rad))
//这里加了一个十分重要的参数!!!十分重要!!!0.058十分重要!!!
context.arc(0, 0, R, rad, nextRad+0.058, false)
context.lineTo(r*Math.cos(nextRad), r*Math.sin(nextRad))
context.arc(0, 0, r, nextRad, rad, true)
context.closePath()
//填充路径颜色
context.fillStyle = "#6AD16A"
context.fill()
}
}
//调用函数。第一个参数是外圆半径,第二个是小圆半径。同时canvas画布的大小是根据外圆半径而设定。
turnTable(200,80,5) </script>
</body>
</html>
最后的这个则是加了简单定时器实现抽奖的转盘代码。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title> </head>
<body>
<canvas id="canvas" class="canvas">你的浏览器版本太低不支持HTML5</canvas> <a href="javascript:(void)" id="btn" style="display: block;position:absolute; left:260px;top:280px;font-size: 24px;
background-color:#419641;opacity: 0.8;padding: 10px;color: #ffffff;text-decoration: none;
">点击抽奖</a>
<script> function turnTable(R,r,length){
//这四行都是获取canvas环境的。
var canvas=document.getElementById("canvas");
canvas.width=2*R;
canvas.height=2*R;
var context=canvas.getContext("2d"); //这个是参数,很重要的参数。错了一个就死翘翘了。
// var value_x=[1,Math.sqrt(2),0,-Math.sqrt(2),-1,-Math.sqrt(2),0,Math.sqrt(2)]
// var value_y=[0,Math.sqrt(2),1,Math.sqrt(2),0,-Math.sqrt(2),-1,-Math.sqrt(2)]
//上面的参数是用枚举法表示x,y的坐标。当时忘了可以用三角函数表示圆的每个点的坐标。
//translate是变换,把转盘移到中间。
context.translate(R,R)
//绘制转盘路径并画出来。
for(var i=0;i<length;i++) {
//设置每块的颜色。这个可以去掉,只是为了区分
var RIGOU=Math.round(Math.random()*255)
var G=Math.round(Math.random()*255)
var B=Math.round(Math.random()*255)
var color="rgba("+RIGOU+","+G+","+B+",0.9)"
//这里是换算为弧度制计算,rad是起始弧度,nextRad是终止弧度。
var everyRad=(2*Math.PI)/length
var rad=everyRad*i
var nextRad=everyRad*(i+1) context.beginPath()
//绘制路径。最难搞的东西。
context.lineTo(r*Math.cos(rad), r*Math.sin(rad))
context.lineTo(R*Math.cos(rad), R*Math.sin(rad))
context.arc(0, 0, R, rad, nextRad, false)
context.lineTo(r*Math.cos(nextRad), r*Math.sin(nextRad))
context.arc(0, 0, r, nextRad, rad, true)
context.closePath()
//填充路径颜色
context.fillStyle = color
context.fill()
}
}
//调用函数。第一个参数是外圆半径,第二个是小圆半径。同时canvas画布的大小是根据外圆半径而设定。
turnTable(300,80,8) var btn=document.getElementById("btn") btn.onclick=function(){
var lowSpeed=20
var temp=0
var timer=null
timer=setInterval(function(){
temp+=Math.random()*20+15
canvas.style.transform="rotate("+temp+"deg)"
},30) setTimeout(function(){
clearInterval(timer)
timer=setInterval(function(){
if(lowSpeed>0) {
lowSpeed-=0.5
temp += lowSpeed
canvas.style.transform = "rotate(" + temp + "deg)"
}
else{
clearInterval(timer)
}
},30)
},1000)
}
</script>
</body>
</html>
自己用h5写的转盘。写贴上来吧。的更多相关文章
- 移动端 h5 uniapp 读,写,删本地文件或sd文件
移动端 h5 uniapp 读,写,删本地文件或sd文件 应用场景: 当我们需要做离线应用或者是加载本地文件时使用到此方法.(本篇文章给大家分享访问app私有文件目录,系统公共目录,sd外置存储的文件 ...
- 象写程序一样写博客:搭建基于github的博客
象写程序一样写博客:搭建基于github的博客 前言 github 真是无所不能.其 Pages 功能 支持上传 html,并且在页面中显示.于是有好事者做了一个基于 github 的博客管理工具 ...
- 《自己动手写CPU》写书评获赠书活动结果
<自己动手写CPU>写书评获赠图书的读者有: 京东:8***2.16号哨兵.magicyu.kk6803.jddickyd.杰出的胡兵 亚马逊:徐贺.马先童.jaychen.farmfar ...
- SSD 为什么顺序写比随机写性能更好?
SSD以Page为单位做读写,以Block为单位做垃圾回收,Page一般有16KB大小,Block一般有几十MB大小,SSD写数据的逻辑是: 1)将该块数据所在的Page读出 2)修改该Page中该块 ...
- 通过hive向写elasticsearch的写如数据
通过hive向写elasticsearch的写如数据 hive 和 elasticsearch 的整合可以参考官方的文档: ES-hadoop的hive整合 : https://www.elastic ...
- 如果使用引用方式引用了js后 则不能再本地写js 因为写了后不会有效果
如果使用引用方式引用了js后 则不能再本地写js 因为写了后不会有效果
- mnesia的脏写和事物写的测试
在之前的文章中,测试了脏读和事物读之间性能差别,下面测试下脏写和事物写之间的性能差别: 代码如下: -module(mnesia_text). -compile(export_all). -recor ...
- OS: 读者写者问题(写者优先+LINUX+多线程+互斥量+代码)(转)
一. 引子 最近想自己写个简单的 WEB SERVER ,为了先练练手,熟悉下在LINUX系统使用基本的进程.线程.互斥等,就拿以前学过的 OS 问题开开刀啦.记得当年学读者写者问题,尤其是写者优先的 ...
- Qt侠:像写诗一样写代码,玩游戏一样的开心心情,还能领工资!
[软]上海-Qt侠 2017/7/12 16:11:20我完全是兴趣主导,老板不给我钱,我也要写好代码!白天干,晚上干,周一周五干,周末继续干!编程已经深入我的基因,深入我的骨髓,深入我的灵魂!当我解 ...
- 程序代写, CS代写, 代码代写, CS编程代写, java代写, python代写, c++/c代写, R代写, 算法代写, web代写
互联网一线工程师程序代写 微信联系 当天完成 查看大牛简介特色: 学霸代写,按时交付,保证原创,7*24在线服务,可加急.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor ...
随机推荐
- 奔小康赚大钱(km)
奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- VS2005+WINDDK+Driver Studio 3.2个人总结
通过在网上搜索大量的资料,终于把环境搭建起来.对于我这样的驱动新手来说,理应把高手们的东西整理并总结下,方便以后的初学者. 这三个软件的安装顺序没有具体规定,也有高手推荐的顺序,我自己也是重复安装卸载 ...
- 驱动: 中断【1】linux中断流程
通常情况下,当一个给定的中断处理程序正在执行时,所有其他的中断都是打开的,所以这些不同中断线上的其他中断都能被处理,但当前中断总是被禁止的. 将中断处理切为两个部分或两半.中断处理程序上半部(top ...
- [Swust OJ 166]--方程的解数(hash法)
题目链接:http://acm.swust.edu.cn/problem/0166/ Time limit(ms): 5000 Memory limit(kb): 65535 有如下方程组: A1 ...
- 基于visual Studio2013解决C语言竞赛题之0416完数
题目 解决代码及点评 完数的解决方案依旧是遍历,然后写出判断完数的函数进行处理 /************************************************** ...
- leetcode第一刷_Maximal Rectangle
这个题比刚才那个更难. 假设没做过上一个,这个简直是无情. 先想一个笨笨的解法,如何确定一个矩形呢?找一个左上角,然后每行的看能延伸到什么位置.注意随着行数的添加,列数是仅仅能变短,不能变长. 想一下 ...
- Lucene核心--构建Lucene搜索(上篇,理论篇)
2.1构建Lucene搜索 2.1.1 Lucene内容模型 一个文档(document)就是Lucene建立索引和搜索的原子单元,它由一个或者多个字段(field)组成,字段才是Lucene的真实内 ...
- .NET截断字符串
/// <summary> /// 截断字符串 /// </summary> /// <param name="s">要截断的字符串</p ...
- splinter python浏览器自动化操作,模拟浏览器的行为
Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...
- CQOI2015 选数
题目 从\([L, H]\)(\(H-L\leq 10^5\))选出\(n\)个整数,使得这些数的最大公约数为\(k\)的方案数. 算法 首先有一个很简单的转化,原问题可以简化为: 从\([\lcei ...