課程
/前端開發
/Html5
/炫麗的倒計時效果Canvas繪圖與動畫基礎
怎么實現從xx天xx時xx分xx秒開始倒計時?謝謝,最好附上源碼
2016-08-25
源自:炫麗的倒計時效果Canvas繪圖與動畫基礎 3-3
正在回答
// JavaScript Document
//window.width =1024;
//window.height =768;
//窗口的處理更加的方便
/*
var WINDOW_WIDTH =1024;
var WINDOW_HEIGHT =768;
var RADIUS =8;
var MARGIN_LEFT =30;
var MARGIN_TOP =60;
const endTime =new Date("2016-07-26 18:20:30");
var curShowTimeSeconds =0;
window.onload = function(){
var canvas =document.getElementById("canvas");
var context =canvas.getContext("2d");
canvas.width =WINDOW_WIDTH;
canvas.height =WINDOW_HEIGHT;
curShowTimeSeconds =getCurrentShowTimeSeconds();
render( context );//繪制當前的canvas函數的畫布
}
function getCurrentShowTimeSeconds(){
var curTime =new Date();
var ret =endTime.getTime()-curTime.getTime();
ret =Math.round(ret/1000);//換算成秒并且取整
return ret>0?ret :0;
function render( cxt ){
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);
? ??
? ?
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();
*/
var WINDOW_WIDTH = 1024;
var WINDOW_HEIGHT = 768;
var RADIUS = 8;
var MARGIN_TOP = 60;
var MARGIN_LEFT = 30;
const endTime = new Date(2016,7,26,22,47,52);
var curShowTimeSeconds = 0
? ? var canvas = document.getElementById('canvas');
? ? var context = canvas.getContext("2d");
? ? canvas.width = WINDOW_WIDTH;
? ? canvas.height = WINDOW_HEIGHT;
? ? curShowTimeSeconds = getCurrentShowTimeSeconds()
? ? render( context )
function getCurrentShowTimeSeconds() {
? ? var curTime = new Date();
? ? var ret = endTime.getTime() - curTime.getTime();
? ? ret = Math.round( ret/1000 )
? ? return ret >= 0 ? ret : 0;
? ? 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);
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()
? ? ? ? ? ? }
zero沐白
舉報
學習HTML5中最激動人心的技術Canvas,徹底釋放自己的創造力
3 回答把計時器改成從0開始計時,怎么改
1 回答3.3倒計時時間計算
2 回答倒計時時鐘做好了,我想添加一個暫停,播放怎么實現
2 回答倒計時異常
1 回答倒計時絢麗圖設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-08-26
// JavaScript Document
//window.width =1024;
//window.height =768;
//窗口的處理更加的方便
/*
var WINDOW_WIDTH =1024;
var WINDOW_HEIGHT =768;
var RADIUS =8;
var MARGIN_LEFT =30;
var MARGIN_TOP =60;
const endTime =new Date("2016-07-26 18:20:30");
var curShowTimeSeconds =0;
window.onload = function(){
var canvas =document.getElementById("canvas");
var context =canvas.getContext("2d");
canvas.width =WINDOW_WIDTH;
canvas.height =WINDOW_HEIGHT;
curShowTimeSeconds =getCurrentShowTimeSeconds();
render( context );//繪制當前的canvas函數的畫布
}
function getCurrentShowTimeSeconds(){
var curTime =new Date();
var ret =endTime.getTime()-curTime.getTime();
ret =Math.round(ret/1000);//換算成秒并且取整
return ret>0?ret :0;
}
function render( cxt ){
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);
? ??
? ?
}
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();
}
}
*/
var WINDOW_WIDTH = 1024;
var WINDOW_HEIGHT = 768;
var RADIUS = 8;
var MARGIN_TOP = 60;
var MARGIN_LEFT = 30;
const endTime = new Date(2016,7,26,22,47,52);
var curShowTimeSeconds = 0
window.onload = function(){
? ? var canvas = document.getElementById('canvas');
? ? var context = canvas.getContext("2d");
? ? canvas.width = WINDOW_WIDTH;
? ? canvas.height = WINDOW_HEIGHT;
? ? curShowTimeSeconds = getCurrentShowTimeSeconds()
? ? render( context )
}
function getCurrentShowTimeSeconds() {
? ? var curTime = new Date();
? ? var ret = endTime.getTime() - curTime.getTime();
? ? ret = Math.round( ret/1000 )
? ? return ret >= 0 ? ret : 0;
}
function render( cxt ){
? ? 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);
}
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()
? ? ? ? ? ? }
}