본문 바로가기

Study/HTML5,CSS,JQuery

[HTML5/CSS3/JQUERY] 현재 시간을 가져와 이미지 시계 나타내기

현재 시간을 가져와 이미지 시계 나타내기

현재 시간을 받아와서 canvas로 시계,시침,분침,초침 이미지를 가져와 시간이 지날 때마다 침 이미지를 그려준다.

 

 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Insert title here</title> 
<!-- <script type="text/javascript" src="js/jquery-1.8.1.min.js"></script> --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 
<script type="text/javascript"> 
    // canvas에 들어갈 이미지 정의 
    var context; 
    var dialImg = new Image(); 
    var hourImg = new Image(); 
    var minImg = new Image(); 
    var secImg = new Image(); 
     
    // 이미지 로딩하기 
    dialImg.src = "image/dial.png"; 
    hourImg.src = "image/pin_3.png"; 
    minImg.src = "image/pin_2.png"; 
    secImg.src = "image/pin_1.png"; 
     
    // 시침, 분침, 초침이 돌아간 각도 -> 각도를 계산하기 위한 변수 
    // 0.0으로 주는 것은 자동으로 실수형 주기 위함 
    var rHour = 0.0, rMin = 0.0, rSec = 0.0;  
    // 화면의 정중앙의 좌표 
    var centerX, centerY; 
     
    var cnt = 0; 
     
    window.onload = function() { 
        // canvas 객체 
        var canvas = document.getElementById("myCanvas"); 
        context = canvas.getContext("2d"); 
         
        // canvas 정중앙의 좌표 
        //centerX = 300/2; 
        //centerY = 300/2; 
         
        centerX = canvas.width/2; 
        centerY = canvas.height/2; 
         
        // 반복적으로 함수 호출 -> 숫자가 적으면 적을수록 호출을 빨리한다. 
        setInterval(showTime, 50); 
         
    } 
     
    function showTime() { 
        // 현재 시간, 분, 초를 보여준다. 
        var d = new Date(); 
        var hour = d.getHours();     // 현재 시간 
        var min = d.getMinutes();    // 현재 분 
        var sec = d.getSeconds();    // 현재 초 
         
        // 초침이 돌아간 각도를 360분법의 각도로 얻어오기 
        rSec = 6*sec; 
        rMin = 6*min + 6*(rSec/360); 
        rHour = 30*hour + 30*(rMin/360); 
         
        // 각을 rad 단위로 환산해서 변수에 대입 
        rSec = rSec*(Math.PI/180); 
        rMin = rMin*(Math.PI/180); 
        rHour = rHour*(Math.PI/180); 
         
        // 화면에 그리는 함수 호출 
        drawCanvas(); 
         
        log(hour+"시 "+min+"분 "+sec+"초"); 
    } 
     
    function drawCanvas() { 
        // 시계 다이얼 그리기 
        context.drawImage(dialImg, centerX-150, centerY-150, 300, 300); 
        context.save();                // 현재 canvas 상태를 저장 

        // 초침 그리기 
        context.translate(centerX, centerY);    // 평행 이동 
        context.rotate(rSec);         // 초침이 돌아간 만큼 회전 
        context.drawImage(secImg, -10, -130+10, 20, 130); 
        context.restore();            // 저장했던 상태로 원상복구 
        context.save();                // 저장 
         
        // 분침 그리기 
        context.translate(centerX, centerY);    // 평행 이동 
        context.rotate(rMin);        // 분침이 돌아간 만큼 회전 
        context.drawImage(minImg, -10, -130+10, 20, 130); 
        context.restore();            // 저장했던 상태로 원상복구 
        context.save();                // 저장 
         
        // 시침 그리기 
        context.translate(centerX, centerY);    // 평행 이동 
        context.rotate(rHour);        // 분침이 돌아간 만큼 회전 
        context.drawImage(hourImg, -10, -130+10, 20, 130); 
        context.restore();            // 저장했던 상태로 원상복구 
        context.save();                // 저장 
    } 
     
    function log(msg) { 
        var console = document.getElementById("console"); 
        console.innerHTML = msg + "<br/>"; 
    } 
     
</script> 
</head> 
<body> 
    <canvas id="myCanvas" width="300" height="300"></canvas> 
    <!-- 시간 출력 -->
    <div id="console" style="width:500px; border:2px solid red; font-size:13pt; text-align:center;"></div> 
</body> 
</html>

 

'Study > HTML5,CSS,JQuery' 카테고리의 다른 글

[HTML5/CSS3/JQUERY] cross message  (0) 2019.05.22
[HTML5/CSS3/JQUERY] message event  (0) 2019.05.22
[HTML5/CSS3/JQUERY] drag & drop 예제  (0) 2019.05.22
[HTML5/CSS3/JQUERY] audio와 video 예제  (0) 2019.05.21
[HTML5/CSS3/JQUERY] canvas  (0) 2019.05.21