利用Canvas 做可以让画板

<body>
    <input type="button" value="重放" id="btn1" class="c_btn" /> <input type="button" value="清空" id="btn2" class="c_btn" /><br />
    <canvas id="musicCanvas" class="canvas"></canvas>
</body>
    <style>
        .canvas {
            border: 1px solid #ddd
        }
    </style>
    <script>
  var CanvasDraw = function(id,width,height){
   this.element = document.getElementById(id);
   this.canvas = this.element.getContext("2d");
   this.element.width = width;
   this.element.height = height;
   this.animateArr =[];
  }
  CanvasDraw.prototype = {
   start : function(){
    var c = this.canvas;
    var elt = this.element;
    var isDrag = false;
    c.lineWidth = 4;
    c.strokeStyle = "#000";
    c.lineJoin = "round";
    if(navigator.userAgent.indexOf("Firefox")==-1){
    c.shadowBlur = 2;
    }else{
    c.shadowBlur = 1;
    }
    c.shadowColor = "black";
    elt.onmousedown = function(){
     isDrag = true;
     c.beginPath();
     return false;
    }
    var g = this;
    elt.onmousemove = function(evt){
     if(isDrag){
      var e = evt || event;
      var x = e.clientX - this.offsetLeft;
      var y = e.clientY - this.offsetTop + document.body.scrollTop;
      c.lineTo(x,y);
      c.stroke();
      g.animateArr.push([x,y]); //把绘制的每一步动作都记录下来
    }
    }
    elt.onmouseup = function(){
     isDrag = false;
     g.animateArr.push(-1);
    }
    elt.onmouseout = function(){
     this.onmouseup();
    }
   }
  }
           //以动画的形式重现刚才的绘画
  function animateGo(g,auto){
   g.canvas.clearRect(0,0,g.element.width,g.element.height);
   g.canvas.beginPath();
   var loop = function(animate,i){
    if(i<animate.length-1){
     var arr = animate[i];
     if(arr==-1){
      g.canvas.beginPath();
     }else{
      g.canvas.lineTo(arr[0],arr[1]);
      g.canvas.stroke();
     }
    i++;
     g.timeId = setTimeout(function(){
      loop(animate,i);
     },10);
    }
   }
   loop(auto || g.animateArr,0);
  }
  onload = function(){
   var g = new CanvasDraw("musicCanvas",600,470);
   g.start();
   document.getElementById("btn1").onclick = function(){
    animateGo(g);
   }
   document.getElementById("btn2").onclick = function(){
    g.canvas.clearRect(0,0,g.element.width,g.element.height);
         g.animateArr = [];
    clearTimeout(g.timeId);
   }
  }
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值