<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        canvas絢麗倒計時實現代碼分享

        來源:懂視網 責編:小OO 時間:2020-11-27 20:03:53
        文檔

        canvas絢麗倒計時實現代碼分享

        效果圖。html。<;<。DOCTYPE html>;<;html lang=";en";>;<;head>;<;meta charset=";UTF-8";>;<;title>;ball<;/title>;<;script src=";digit_1.js";>;<;/script>;<;script src=";countdown.js";>;<;/script>;<;/head>;<;body >;<;canvas id=";canvas";>;<;/canvas>。
        推薦度:
        導讀效果圖。html。<;<。DOCTYPE html>;<;html lang=";en";>;<;head>;<;meta charset=";UTF-8";>;<;title>;ball<;/title>;<;script src=";digit_1.js";>;<;/script>;<;script src=";countdown.js";>;<;/script>;<;/head>;<;body >;<;canvas id=";canvas";>;<;/canvas>。
        本文主要為大家帶來一篇canvas基礎繪制-絢麗倒計時的實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望能幫助到大家。

        效果圖:

        html:

        <!DOCTYPE html>
        <html lang="en">
        <head>
         <meta charset="UTF-8">
         <title>ball</title>
         <script src="digit_1.js"></script>
         <script src="countdown.js"></script>
        </head>
        <body >
        <canvas id="canvas" ></canvas>
        </body>
        </html>

        digit_1.js在之前的 canvas基礎繪制-倒計時 中有貼

        countdown.js:

        var WINDOW_WIDTH = 1024;
        var WINDOW_HEIGHT = 768;
        var RADIUS = 8;
        var MARGIN_TOP = 60;
        var MARGIN_LEFT = 30;
        
        var endTime = new Date();//const聲明變量,不可修改,必須聲明時賦值;
        endTime.setTime( endTime.getTime() + 3600*1000);//當前時間向后一小時;
        var curShowTimeSeconds = 0;
        
        var balls =[];
        const colors = ["#33B5E5","#0099CC","#AA66CC","#9933CC","#99CC00","#669900","#FFBB33","#FF8800","#FF4444","#CC0000"];
        
        window.onload = function () {
         //屏幕自適應
         WINDOW_WIDTH = document.body.clientWidth;
         WINDOW_HEIGHT = document.body.clientHeight;
        
         RADIUS = Math.round(WINDOW_WIDTH*4/5/108)-1;
        
         MARGIN_TOP = Math.round(WINDOW_HEIGHT/5);
         MARGIN_LEFT = Math.round(WINDOW_WIDTH/10);
        
         var canvas = document.getElementById("canvas");
         var context = canvas.getContext("2d");
        
         canvas.width = WINDOW_WIDTH;
         canvas.height = WINDOW_HEIGHT;
        
         curShowTimeSeconds = getCurrentShowTimeSeconds();
         setInterval(
         function () {
         update();
         render(context);
         },50)
        
        };
        
        function getCurrentShowTimeSeconds() {
         var curTime = new Date();//獲取目前時間;
         var ret = endTime.getTime()-curTime.getTime();
         ret = Math.round(ret/1000);//獲取秒數差值;
         return ret>=0?ret:0;
        }
        function update() {
        
         var nextShowTimeSeconds = getCurrentShowTimeSeconds();
        
         var nextHours = parseInt(nextShowTimeSeconds/3600);
         var nextMinutes = parseInt((nextShowTimeSeconds-nextHours*3600)/60);
         var nextSeconds = nextShowTimeSeconds%60;
        
         var curHours = parseInt(curShowTimeSeconds/3600);
         var curMinutes = parseInt((curShowTimeSeconds-curHours*3600)/60);
         var curSeconds = curShowTimeSeconds%60;
        
         if(nextSeconds!=curSeconds){
         if(parseInt(curHours/10)!=parseInt(nextHours/10)){
         addBalls(MARGIN_LEFT+0,MARGIN_TOP,parseInt(curHours/10));
         }
         if(parseInt(curHours%10)!=parseInt(nextHours%10)){
         addBalls(MARGIN_LEFT+15*(RADIUS+1),MARGIN_TOP,parseInt(curHours%10));
         }
        
         if(parseInt(curMinutes/10)!=parseInt(nextMinutes/10)){
         addBalls(MARGIN_LEFT+39*(RADIUS+1),MARGIN_TOP,parseInt(curMinutes/10));
         }
         if(parseInt(curMinutes%10)!=parseInt(nextMinutes%10)){
         addBalls(MARGIN_LEFT+54*(RADIUS+1),MARGIN_TOP,parseInt(curMinutes%10));
         }
        
         if(parseInt(curSeconds/10)!=parseInt(nextSeconds/10)){
         addBalls(MARGIN_LEFT+78*(RADIUS+1),MARGIN_TOP,parseInt(curSeconds/10));
         }
         if(parseInt(curSeconds%10)!=parseInt(nextSeconds%10)){
         addBalls(MARGIN_LEFT+93*(RADIUS+1),MARGIN_TOP,parseInt(curSeconds%10));
         }
        
         curShowTimeSeconds = nextShowTimeSeconds;
         }
         
         updateBalls();
        }
        function updateBalls() {
        
         //循環遍歷每一個彩色動畫小球
         for(var i=0;i<balls.length;i++){
         balls[i].x+=balls[i].vx;
         balls[i].y+=balls[i].vy;
         balls[i].vy+=balls[i].g;
         //落到畫布最底部時反彈起來
         if(balls[i].y>=WINDOW_HEIGHT){
         balls[i].y = WINDOW_HEIGHT-RADIUS;
         balls[i].vy = -balls[i].vy*0.75;
         }
         }
        
         // 如果小球出了畫布,就清除小球,性能優化
         var cnt = 0;
         for(var i=0;i<balls.length;i++){
         if(balls[i].x-RADIUS>0&&balls[i].x+RADIUS<WINDOW_WIDTH){
         balls[cnt++] = balls[i];
         }
         }
        
         while (balls.length>Math.min(300,cnt)){
         balls.pop();
         }
        }
        function addBalls(x,y,num) {
        
        
         for (var i = 0; i < digit[num].length; i++) {//數組行
         for (var j = 0; j < digit[num][i].length; j++) {//數組列
         if (digit[num][i][j] == 1) {
         var aBall = {
         x: x + j * 2 * (RADIUS + 1) + (RADIUS + 1),
         y: y + i * 2 * (RADIUS + 1) + (RADIUS + 1),
         g: 1.5 + Math.random(),
         vx: Math.pow(-1, Math.ceil(Math.random() * 1000)) * 4,//pow(x,y),x 的 y 次冪;ceil()可對一個數進行上舍入;
         vy: -5,
         color: colors[Math.floor(Math.random() * colors.length)]//floor()對一個數進行下舍入
         };
         balls.push(aBall);
         }
         }
         }
        }
        function render(cxt) {
         //每一幀都要對動畫進行刷新,不然就會新的舊的疊在一起;
         cxt.clearRect(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);//對一個矩形空間里的動畫進行刷新;
         //倒計時的時間繪制
         var hours = parseInt(curShowTimeSeconds/3600);
         var minutes = parseInt((curShowTimeSeconds-hours*3600)/60);
         var seconds = curShowTimeSeconds%60;
        
         renderDigit(MARGIN_LEFT,MARGIN_TOP,parseInt(hours/10),cxt);
         renderDigit(MARGIN_LEFT+15*(RADIUS+1),MARGIN_TOP,parseInt(hours%10),cxt);
         renderDigit(MARGIN_LEFT+30*(RADIUS+1),MARGIN_TOP,10,cxt);
         renderDigit(MARGIN_LEFT+39*(RADIUS+1),MARGIN_TOP,parseInt(minutes/10),cxt);
         renderDigit(MARGIN_LEFT+54*(RADIUS+1),MARGIN_TOP,parseInt(minutes%10),cxt);
         renderDigit(MARGIN_LEFT+69*(RADIUS+1),MARGIN_TOP,10,cxt);
         renderDigit(MARGIN_LEFT+78*(RADIUS+1),MARGIN_TOP,parseInt(seconds/10),cxt);
         renderDigit(MARGIN_LEFT+93*(RADIUS+1),MARGIN_TOP,parseInt(seconds%10),cxt);
         //彩色動畫小球的繪制
         for(var i=0;i<balls.length;i++){
         cxt.fillStyle = balls[i].color;
        
         cxt.beginPath();
         cxt.arc(balls[i].x,balls[i].y,RADIUS,0,2*Math.PI,true);
         cxt.closePath();
        
         cxt.fill();
         }
        }
        
        function renderDigit(x,y,num,cxt) {
        
         cxt.fillStyle = "rgb(0,102,153)";
        
         for (var i = 0; i < digit[num].length; i++) {//數組行
         for (var j = 0; j < digit[num][i].length; j++) {//數組列
         if (digit[num][i][j] == 1) {
         cxt.beginPath();
         cxt.arc(x + j * 2 * (RADIUS + 1) + (RADIUS + 1), y + i * 2 * (RADIUS + 1) + (RADIUS + 1), RADIUS, 0, 2 * Math.PI);
         cxt.closePath();
        
         cxt.fill();
         }
         }
         }
        }

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        canvas絢麗倒計時實現代碼分享

        效果圖。html。<;<。DOCTYPE html>;<;html lang=";en";>;<;head>;<;meta charset=";UTF-8";>;<;title>;ball<;/title>;<;script src=";digit_1.js";>;<;/script>;<;script src=";countdown.js";>;<;/script>;<;/head>;<;body >;<;canvas id=";canvas";>;<;/canvas>。
        推薦度:
        標簽: 實現 代碼 倒計時
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲av成人无码网站…| 亚洲人成色7777在线观看| 亚洲精品福利在线观看| a毛片免费全部在线播放**| 中文字幕在亚洲第一在线| 国产成人无码精品久久久免费 | h视频在线免费观看| 亚洲精品第一国产综合精品99| 日本亚洲中午字幕乱码| 亚洲伊人久久成综合人影院| 4hu四虎免费影院www| 亚洲AV无码成人网站久久精品大| 久久精品国产影库免费看| 久久亚洲精品无码aⅴ大香| 91免费国产在线观看| 亚洲真人无码永久在线观看| 免费大学生国产在线观看p| 久久久WWW免费人成精品| 亚洲女久久久噜噜噜熟女| 6080午夜一级毛片免费看6080夜福利| 国产精品亚洲精品观看不卡| 色视频色露露永久免费观看| 一级特黄录像免费播放肥| 亚洲综合网美国十次| 日韩在线视频免费看| 成年大片免费视频播放一级| 久久亚洲AV成人无码电影| 四虎成人免费影院网址| 一级毛片高清免费播放| 亚洲视频一区网站| 免费A级毛片无码A| 91香蕉在线观看免费高清| 亚洲精品乱码久久久久久V| 亚洲中久无码不卡永久在线观看| 久久精品毛片免费观看| 国产亚洲精品国产福利在线观看 | 国产成人在线观看免费网站| 中文字幕无线码中文字幕免费| 亚洲理论片在线中文字幕| 免费在线看片网站| av大片在线无码免费|