원생 js+canvas 를 사용 하여 아 날로 그 심전도 의 인 스 턴 스 를 실현 합 니 다.

6542 단어 jscanvas심전도
2015 년 2 월 IT 업계 로 전업 한 지 거의 2 년 이 되 었 습 니 다.처음에 자바 부터 지금까지 의 전단 까지 자신 이 모색 하 는 길에 지금까지 걸 어 왔 습 니 다.전단 의 큰 신 은 절대 말 할 것 도 없고 입문 한 풋내기 라 고 할 수 있 습 니 다.
처음에 어 리 석 었 을 때 부터 지금까지 github 을 쓰 고 블 로 그 를 쓰기 시 작 했 습 니 다.사실은 기술적 으로 쓸 만 한 것 이 많 지 않 았 습 니 다.자신 도 이제 막 입문 을 했 기 때문에 자신의 취미 에 따라 재 미 있 는 작은 프로젝트 를 썼 다 고 할 수 있 습 니 다.프로젝트 에 존재 하 는 문제점 도 큰 신 이 지적 해 주 셨 으 면 좋 겠 습 니 다.현재 이 demo 의 기능 이 실현 되 었 고 후기 에 저 는 스타일,코드 등 을 최적화 하 다.
프로젝트 실행 효과:

프로젝트 소개:원생 js+canvas 로 제 작 된 아 날로 그 심전도 html 페이지 를 사용 합 니 다.프로젝트 와 함께 github 에 포장 되 어 있 기 때문에 vue.js 의 단일 페이지 모드 를 사 용 했 습 니 다.실제로 추가 프레임 워 크 와 스타일 을 사용 하지 않 아 도 이 demo 를 완성 할 수 있 습 니 다.이 프로젝트 를 함께 분해 합 시다!
1:페이지 에 canvas 캔버스 를 만 듭 니 다.심전도 의'선'이 우리 페이지 에서 움 직 여야 합 니 다.canvas 는 없어 서 는 안 됩 니 다.프로젝트 가 비교적 간단 하기 때문에 지금까지 페이지 의 DOM 요 소 는 이미 다 썼 고 주요 작업량 은 js 부분 에 집중 되 었 습 니 다.

<div class="heartBeat">
   <canvas id="can">Canvas  </canvas>
 </div>
2:몇 개의 변 수 를 정의 하고 값 을 부여 합 니 다.실행 할 때 이 변 수 를 사용 하여 계산 해 야 합 니 다.

var can = document.getElementById('can'),//    
    pan,//  2D  API  
    index = 0,//    setinerval  
    flag = true,//              
    wid = document.body.clientWidth,//       
    hei = document.body.clientHeight,//       
    x = 0,//    “ ”     x   , 0  
    y = hei/2;//    “ ”     y   ,   y       
3:캔버스 초기 화,캔버스 에 각종 속성 설정

function start(){
    can.height = hei;//      
    can.width = wid;//      
    pan = can.getContext("2d");//  2D  API  
    pan.strokeStyle = "#08b95a";//      
    pan.lineJoin = "round";//            
    pan.lineWidth = 9;//      
    pan.beginPath();//         
    pan.moveTo(x,y);//     “   ”
    index = setInterval(move,1);//         
  };
이 를 통 해 알 수 있 듯 이 여기 서 우 리 는'그림'의 동작 과 관련 되 지 않 았 다.캔버스 의 사 이 즈 를 초기 화하 고 캔버스 를 화면 에 가득 채 우 는 동시에 붓 의 색깔,굵기,착안점 등 조작 을 정의 한 다음 에 setInterval 방법 으로 붓 을 우리 가 계산 한 노선 에 따라 계속 운동 하 게 했다.만약 에 setInterval 방법 에 익숙 하지 않다 면setInterVal 의 용법 을 보 는 것 을 권장 합 니 다.여 기 는 더 이상 상술 하지 않 겠 습 니 다.심전도 가 무한 순환 되 고 자동 으로 실행 되 기 를 원 하기 때문에 여기 서 start()함수 로 봉 합 니 다.이렇게 심전도 가 화면 오른쪽 까지 운동 할 때 이 start()함 수 를 다시 실행 하면 심전도 가 무한 순환 할 수 있 습 니 다.
4.심 전 도 를 움 직 여 라!앞의 절 차 는 어렵 지 않다 고 할 수 있다.진정한 핵심 코드 는 우리 의 심전도 가 움 직 이 고 우리 가 원 하 는 노선 에 따라 전진 하 는 것 이다.다음은 우리 가 심전도 가 진정 으로 살아 날 수 있 도록 하 는 것 이다.

function move(){
    x++;//x       ,  x    
    if(x < 100){
      // 100px,          ,            ,        
    }else{
      if(x >= wid - 100){
      //   100px,             ,      ,        
      }else{
        //             ,                        ,           ,           z
        var z = Math.random()*280;

        if(y <= z){
          //               ,             (0,0),y          y ,  y  z,   y        ,         
          flag = true
        }
        if((hei - y) <= z){
          //       y    y       hei          z,                ,          
          flag = false
        }
        if(flag){
          //  flag true,             ,          ,             (0,0),  y    ,   y            ,        ,y        ,            ,     y += 5,
          y+=5
        }else{
          //  flag false,       ,y        
          y-=5
        }
      }
    }
    if(x == wid){
      //             ,    
      pan.closePath();
      //    
      clearInterval(index);
      // index  ,       
      index = 0;
      //                  
      x = 0;
      y = hei/2;
      flag = true;
      //             
      start();
    }
    //lineTo stroke          
    pan.lineTo(x,y);
    pan.stroke();
  }
5:주의사항,여기까지 실제로 심전도 가 실 행 될 수 있 습 니 다.하지만 주의해 야 할 것 은 body 높이 를 100%로 설정 하 는 것 입 니 다.그렇지 않 으 면 캔버스 가 전체 페이지 를 채 울 수 없 을 수도 있 습 니 다.

html,body{
   width: 100%;
   height: 100%;
   margin: 0;
  }
프로젝트 전체 코드:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>     </title>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  <style>
    html,body{
      width: 100%;
      height: 100%;
      margin: 0;
    }
  </style>
</head>
<body>
<div id="canvas">
  <canvas id="can">Canvas  </canvas>
</div>

<script src="js/vue.min.js"></script>
<script>
  var can = document.getElementById('can'),
    pan,
    index = 0,
    flag = true,
    wid = document.body.clientWidth,
    hei = document.body.clientHeight,
    x = 0,
    y = hei/2;
  start();
  function start(){
    can.height = hei;
    can.width = wid;
    pan = can.getContext("2d");//  2D  API  
    pan.strokeStyle = "#08b95a";//      
    pan.lineJoin = "round";//            
    pan.lineWidth = 9;//      
    pan.beginPath();
    pan.moveTo(x,y);
    index = setInterval(move,1);
  };
  function move(){
    x++;
    if(x < 100){

    }else{
      if(x >= wid - 100){

      }else{
        var z = Math.random()*280;
        if(y <= z){
          flag = true
        }
        if((hei - y) <= z){
          flag = false
        }
        if(flag){
          y+=5
        }else{
          y-=5
        }
      }
    }
    if(x == wid){
      pan.closePath();
      clearInterval(index);
      index = 0;
      x = 0;
      y = hei/2;
      flag = true;
      start();
    }
    pan.lineTo(x,y);
    pan.stroke();
  }

 /* */

</script>
</body>
</html>
이상 의 원생 js+canvas 를 사용 하여 아 날로 그 심 전 도 를 실현 하 는 실례 는 바로 소 편 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기