问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

HTML JS大转盘在手机浏览器上的显示问题

发布网友 发布时间:2022-04-19 23:20

我来回答

2个回答

懂视网 时间:2022-04-20 03:41

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

最近在学canvas做动画,于是就写个转盘练下手。
上个简陋的成果图(中间那个是转的指针,外面的圈是图片,懒得写了哈哈哈)

1565300737-5b682bdbd48ac_articlex.png

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

html

<body>
 <canvas id="canvas">您的浏览器不支持canvas</canvas>
 <img src="./zp.jpg" alt="" id="img">
</body>

css

<style>
 #canvas{
 position: absolute;
 left: 230px;
 top: 230px;
 }
 #img{
 width: 600px;
 height: 600px;
 }
 </style>

js

 var 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();

最后

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

相关文章推荐:

html5 canvas用来绘制弧形的代码实现

HTML5实现魔方游戏的代码

HTML5结合互联网+ 实现的3D隧道(附代码)

热心网友 时间:2022-04-20 00:49

一款JS+html5转盘抽奖代码网页特效,该特效代码基于html5 canvas技术实现,点击开始旋转按钮,转盘就会快速旋转,停止旋转后,所在区域就是中奖项目。奖项可以自定义。请用支持HTML5+CSS3主流浏览器预览效果。(兼容测试:FireFox、Chrome、Safari、Opera等支持HTML5/CSS3浏览器)
使用方法:
1、调用CSS样式:
<link rel="stylesheet" type="text/css" href="css/style.css" />

2、添加HTML代码:
将<!--效果html开始-->......<!--效果html结束-->之间的html和js代码;放在<body></body>之间。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
脾基本简介 人体有2个脾脏吗 百度百科 人的脾有几个 我是无锡的,公司需要办理健康证,请问应该到哪里去办理? 儿童健康小常识:让宝宝快乐成长 如何构建认罪认罚案件相对不起诉适用标准 相对不起诉概述 杨笠脱口秀称男人没底线,直言没有男人生活会更幸福,你认可吗? 每个人都是独立的个体都有自己生活的选择方式和权利,别人不要干涉... ...人观点,是我的自由、我的权利别人无权 干涉”这种观点 A型血的天秤座是不是很自大,自私,自我还心眼多? 早熟大红果番茄哪些品种比较好? 天秤座女生不讲理吗?有的时候很自私,还很2还爱不理人。这是怎么回事 天秤座是不是很自私? 北斗找人如何退款 言情小说的细节部分有哪些? 天枰座的女生自私吗? 天秤座的女生自私吗?有心计吗? 我想写小说,但是细节总是写不好,怎么办? 天秤座的女生自私吗? 澳洲Swisse男士复合维生素营养片效果怎么样,有副作用吗,好不好用 swisse绿叶素片是一日3片是一顿吃还是分几次 求一下网络小说细节描写技巧,或者可以学习的地方! 一点亏都不愿吃的天秤座女生,在本性上是不是很自私? 盘点金庸小说中耐人寻味的细节,你都看懂几个? 腾讯广告139元3条打底裤靠谱吗? 哪里有打底裤广告录音?全部卖25元的打底裤 罗迪卡(NDK)的介绍,最好能详细说下 寒冷气候中,不穿秋裤的人是怎么御寒的? 微商远东打底裤的广告词 有谁知道德奥特这个公司的番茄种子怎么样大红果那几个品种比较反应力强些 冬季大棚西红柿育苗前的准备工作怎样做 那么多人不喜欢天秤女,这是为什么? 有谁可以告诉我一个靠谱点的定位软件~或者是能找见这个人的方法~一个欠我钱,又欠我良心的人。 天秤座的人自私么? 推荐个好的番茄种子 天秤座的人很虚伪,很自私吗? 史上最丑恶的星座天枰,自私,阴险,心机重,自以为是 天秤最自私,爱情总摆在第二甚至后面,这个星座男值得托付吗? 大红果与老品种西红柿哪个更好吃 在感情中,天秤座的女生会不会很喜欢以自我为中心? 大家说说看,天秤座的女生有哪些不好的地方是改不了的? 格列佛游记阅读题 名著阅读题。(7分)小题1:《格列佛游记》中,“我”来到了大人国的皇宫,受到了王后的侏儒的哪些欺侮?(3分 名著阅读(8分)小题1:根据提示填空。(4分)《格列佛游记》中,小人国里有一种很奇特的风俗,即国王用 关于格列佛游记的题目 三元锂电池鼓包了放完气还可以使用多久 格列佛游记阅读题 格列佛与小人国大人国国民的身高比例分别是多少? 帮我出一些《格列佛游记》的题目 苹果手机的电池鼓起包了还能用吗?多久换一次电池