首頁  >  文章  >  web前端  >  HTML5 canvas實作中獎轉盤的實例程式碼

HTML5 canvas實作中獎轉盤的實例程式碼

不言
不言原創
2018-08-07 14:55:382858瀏覽

這篇文章帶給大家的內容是關於HTML5 canvas實作中獎轉盤的實例程式碼,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

最近在學canvas做動畫,於是就寫個轉盤練下手。
上個簡陋的成果圖(中間那個是轉的指針,外面的圈是圖片,懶得寫了哈哈哈)

HTML5 canvas實作中獎轉盤的實例程式碼

程式碼很簡單,都註解了,直接上程式碼吧,嗤嚶嚶

html

  <canvas>您的浏览器不支持canvas</canvas>
  <img  alt="HTML5 canvas實作中獎轉盤的實例程式碼" >

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 2000){

      //如果下面设置的是固定角度,那这里的最小速度建议为1,因为每次转动角度过大,一圈很可能错过中奖的角度,导致转很多圈。
      if(rotate_deg>=2){
        speedUp = false;
        rotate_deg -=1;
      }
      //设置中奖区间为+-5度(设置固定角度会让动画有点难看)
      if(first_deg%360>=end_deg-5&&first_deg%360<p><strong>最後</strong></p><p>現在這個轉盤比較大的問題就是,如果中獎區間比較小,那減速後轉動的時間就長一些,最低速度轉很久才停下。當區間大的時候一下子就停下了,減速效果不明顯,視覺上看起來很奇怪。 </p><p>相關文章推薦:</p><p><a href="http://www.php.cn/html5-tutorial-407703.html" target="_blank" title="html5 canvas用来绘制弧形的代码实现">html5 canvas用來繪製弧形的程式碼實作</a></p><p class="post-topheader custom- pt0"><a href="http://www.php.cn/html5-tutorial-407589.html" target="_blank" title="HTML5实现魔方游戏的代码">HTML5實作魔術方塊遊戲的程式碼</a> </p><p class="mb20"><a href="http://www.php.cn/html5-tutorial-407331.html" target="_blank" title="HTML5结合互联网+ 实现的3D隧道(附代码)">HTML5結合網路實作的3D隧道(附程式碼)</a></p>

以上是HTML5 canvas實作中獎轉盤的實例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn