h5大转盘 php,HTML5 canvas实现中奖转盘的实例代码

本篇文章给大家带来的内容是关于HTML5 canvas实现中奖转盘的实例代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

最近在学canvas做动画,于是就写个转盘练下手。

上个简陋的成果图(中间那个是转的指针,外面的圈是图片,懒得写了哈哈哈)

ec40dcc00a5b6f4fb097a2e5a318da1e.png

代码很简单,都注释了,直接上代码吧,嘤嘤嘤

html

您的浏览器不支持canvas

css

#canvas{

position: absolute;

left: 230px;

top: 230px;

}

#img{

width: 600px;

height: 600px;

}

jsvar canvas = document.getElementById('canvas');

var context = canvas.getContext('2d');

//设定画布和宽

canvas.width=140;

canvas.height=140;

var then = Date.now();

var now;//利用时间差来控制转盘最小转动时间

var first_deg=0;//用来记录转动的角度

var rotate_deg=0;//每次转动的角度,用来实现变速运动

var end_deg =85;//中奖角度

var speedUp = true;//判断是否在加速阶段

var f;

// 因为canvas的rotate函数是根据左上角坐标(0,0)来旋转的,所以移动画布

context.translate(70,70);

function draw(){

context.clearRect(-70, -70, 70, 70);

context.beginPath();

context.arc(0, 0, 50, Math.PI / 180 * 0, Math.PI / 180 * 360, true);

context.moveTo(-50,0);

context.lineTo(50,0);

context.lineTo(0,-70);

context.rotate(rotate_deg*Math.PI/180);

context.closePath();

context.fillStyle='red';

context.fill();

}

// 将运动分为3段,加速,匀速,减速

function loop(){

//循环调用,产生动画效果

f = window.requestAnimationFrame(loop);

now = Date.now();

//开始加速转动,转到速度为20就不加速了,至于为什么是20,看起来舒服而已

if(rotate_deg<=20&&speedUp){

rotate_deg +=1;

};

//2s后开始减速(即最小转动时间),减速是为了视觉上的美观

if(now - then > 2000){

//如果下面设置的是固定角度,那这里的最小速度建议为1,因为每次转动角度过大,一圈很可能错过中奖的角度,导致转很多圈。

if(rotate_deg>=2){

speedUp = false;

rotate_deg -=1;

}

//设置中奖区间为+-5度(设置固定角度会让动画有点难看)

if(first_deg%360>=end_deg-5&&first_deg%360<=end_deg+5){

window.cancelAnimationFrame(f);//停止循环

//中奖操作

}

};

first_deg += rotate_deg;//记录转过的角度

draw();//绘制图形

}

loop();

最后

现在这个转盘比较大的问题就是,如果中奖区间比较小,那减速后转动的时间就长一些,最低速度转很久才停下。当区间大的时候一下子就停下了,减速效果不明显,视觉上看起来很奇怪。

相关文章推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件巨头正在崛起,中国独占鳌头

来源&#xff1a;亿欧概要&#xff1a;四年前&#xff0c;当第一份独角兽名单产生时&#xff0c;名单上有39家创业公司&#xff0c;其中只有一家是硬件公司。今天&#xff0c;世界上有大约213家独角兽&#xff0c;其中有18家是硬件创业公司。考虑到硬件只占全球科技创业公司的一…

MATLAB显示错误使用untitled,使用Matlab 2016a阻止集合构建错误

matlab R2016a.OS&#xff1a;我所生成的Windows 10All是Master Block&#xff0c;除了用于测试用例之外&#xff0c;没有其他任何东西&#xff0c;我得到以下错误&#xff1a;请帮助我完成这项工作&#xff0c;因为我确实需要完成一些工作。Ali以上来自于百度翻译以下为原文Hi…

神经网络:你的大脑是一台计算机吗?

原作者:ShamliPrakash译者&#xff1a;彭婷概要&#xff1a;大约三年前&#xff0c;当我怀孕盼着儿子出生的时候&#xff0c;朋友送了我Lise Eliot写的“What’s Going on in There?”的书。大约三年前&#xff0c;当我怀孕盼着儿子出生的时候&#xff0c;朋友送了我Lise Elio…

深度 | 三大痛点左右着中国服务机器人产业发展

来源&#xff1a; 机器人内参概要&#xff1a; 从全球角度看&#xff0c;以智能服务机器人为主的机器人产业在不断发展&#xff0c;产业规模及市场空间持续扩张。目前全世界至少有48个国家在发展机器人&#xff0c;其中25个国家已涉足服务机器人开发&#xff0c;掀起一波服务机…

php fork 相关函数,C语言fork函数创建进程详解

在linux下&#xff0c;C语言创建进程用fork函数&#xff0c;接下来我们通过代码来一步步了解fork函数的各个知识点。1、依赖的头文件#include 2、fork的原理和概念fork子进程就是从父进程拷贝一个新的进程出来&#xff0c;子进程和父进程的进程ID不同&#xff0c;但用户数据一样…

华为云AI开发部总经理罗华霖:华为人工智能的实践与创新

来源&#xff1a;亿欧作者&#xff1a;罗华霖概要&#xff1a;9月21-22日&#xff0c;由深圳市罗湖区人民政府指导、亿欧公司主办的“GIIS-全球产业创新峰会”在罗湖区京基100瑞吉酒店盛大启幕。9月21-22日&#xff0c;由深圳市罗湖区人民政府指导、亿欧公司主办的“GIIS-全球产…

oracle drop 提交,oracle drop 存储过程

Oracle中删除用户遇到的问题我新建了一个用户xy&#xff0c;并导入了一些表&#xff0c;序列&#xff0c;存储过程在其中。现在我用删除该用户出现问题执行drop user xy&#xff0c;报错ORA-01922: 必须指定 CASCADE 以删除 XY问题原因CASCADE众所周知是级联的意思&#xff0c;…

Michael I. Jordan——计算思维、推断思维与数据科学

来源&#xff1a;图灵人工智能概要&#xff1a; Michael I. Jordan 是机器学习、统计机器学习泰斗&#xff0c;是贝叶斯网络、概率图模型、层次随机过程等多个重要方向的主要奠基者之一&#xff0c;也是统计学与机器学习交叉融合的主要推动者之一。Michael I. Jordan 是机器学习…

Google Brain 团队的研究方法

来源&#xff1a;全球人工智能概要&#xff1a;大约一年之前&#xff0c;Google Brain 团队首次分享了我们的使命&#xff1a;让机器拥有智慧&#xff0c;造福人类生活。大约一年之前&#xff0c;Google Brain 团队首次分享了我们的使命&#xff1a;让机器拥有智慧&#xff0c;…

Gartner重磅发布近40页PPT,详解2017年十大战略技术趋势

来源&#xff1a;中国大数据概要&#xff1a;Gartner将战略科技发展趋势定义为具有颠覆性潜力、脱离初级阶段且影响范围和用途不断扩大的战略科技发展趋势&#xff0c;这些趋势在未来五年内迅速增长、高度波动、预计达到临界点。 近日Gartner公司着重介绍了在2017年对多个组织具…

巴菲特、李嘉诚、盖茨、小扎、孙正义…… 这是他们眼中的未来

来源&#xff1a;全球创新论坛概要&#xff1a;这些企业家、梦想家和先知在各自的领域中都取得了非凡的成就&#xff0c;创造了巨大的财富&#xff0c;如果让他们展望人类下一个百年&#xff0c;他们会告诉我们什么&#xff1f;为了庆祝百年诞辰&#xff0c;《福布斯》杂志最近…

oracle 01304,关于ORA-01034和ORA-27101的解决方法

[oraclelocalhost admin]$ oerr ora 0130401304, 00000, “subordinate process error. Check alert and trace logs”// *Cause: A process subordinate to this Logminer process has exited with an// error condition.// *Action: Look in the alert log and trace files f…

深度学习不是AI的未来

来源&#xff1a;中国机器人概要&#xff1a;深度学习并不是人工智能的同义词!由于谷歌、Facebook等巨头公司宣传人工智能工具时主要谈的就是深度学习&#xff0c;甚至只谈深度学习&#xff0c;因此大众误以为所有的人工智能新的篇章都(将)由深度学习书写。现在每一个人都正在学…

linux命令解压文件到指定目录并覆盖,你不知道的Linux解压命令

在桌面Linux发行版中解压、压缩都非常方便&#xff0c;直接右键文件就可以了&#xff0c; 但在服务器版的Linux中一般是没有桌面环境的&#xff0c;这时候就要用到命令了。下面我就介绍下等12种格式的压缩文件的压缩和解压的命令。本次为zip文件要使用的命令和命令的用法。建议…

十一来临,国内有哪些手机智能助手帮你出行?

作者&#xff1a;camel概要&#xff1a;手机语音助手已发展多年&#xff0c;随着近几年机器学习的发展&#xff0c;语音助手在语音识别、语义理解等方面已经有了很大的发展。手机语音助手已发展多年&#xff0c;随着近几年机器学习的发展&#xff0c;语音助手在语音识别、语义理…

linux查端口被占用情况,Linux系统中如何查询端口被占用情况

今天小编要跟大家分享的文章是关于Linux系统中如何查询端口被占用情况。正在从事Linux运维工作的小伙伴来和小编来和小编一起看一看吧&#xff0c;希望能够对大家有所帮助。Linux如何查看端口1、lsof -i:端口号 用于查看某一端口的占用情况&#xff0c;比如查看8000端口使用情况…

在分析了AI顶会上的6163篇论文后,我们能发现怎样的发展趋势与变化……

来源&#xff1a;机器人圈概要&#xff1a;最近&#xff0c;有关人工智能&#xff08;AI&#xff09;的研究在各个领域都取得了显著的成果。这主要归功于长期以来一直致力于这个研究领域的AI研究人员的努力。最近&#xff0c;有关人工智能&#xff08;AI&#xff09;的研究在各…

如果linux目录中没有srv,了解linux系统目录,proc,root,sbin,selinux,srv!

linux小白到大神的成长之路&#xff1a;了解linux系统目录&#xff0c;proc,root,sbin,selinux,srv&#xff01;本经验由宗龙龙原创,全文共600多字&#xff0c;阅读需要14分钟&#xff0c;如果文中存在错误&#xff0c;还请大家多多指点&#xff0c;我会积极改进的&#xff01;…

争夺基础架构主导权,AI 新一轮战争将打响?

来源&#xff1a;36氪概要&#xff1a;近日&#xff0c;Applied Materials CEO Gary Dickerson在接受采访时表示&#xff0c;近期&#xff0c;巨头们将会围绕“构建下一代人工智能的基础框架”展开新一轮的战争。经过了这么长时间的“炒作”&#xff0c;人工智能的发展与应用到…

linux配置redis服务,Linux下安装Redis并设置相关服务

一、简介Redis是一个开源&#xff0c;先进的key-value存储&#xff0c;并用于构建高性能&#xff0c;可扩展的Web应用程序的完美解决方案。Redis从它的许多竞争继承来的三个主要特点&#xff1a;Redis数据库完全在内存中&#xff0c;使用磁盘仅用于持久性。相比许多键值数据存储…