老莫的笔记本  
  
查看: 1169|回复: 0

Canvas 阿尔卑斯小悦球

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2018-12-14 00:00:14 | 显示全部楼层 |阅读模式
这里有一个被我忘掉的巨大的坑点: fillstyle='颜色' ; 这句话 如果 没有  fill() 做支撑,则画不出来东西,因为他只是定义一个属性—— 胖爷居然忘掉了 尴尬
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="utf-8">
  5.     <title>鼠标移动产生动态效果</title>
  6.     <style>
  7.         *{
  8.             padding: 0;
  9.             margin:0;
  10.         }
  11.         body{
  12.             background: #000;
  13.             overflow: hidden;
  14.         }
  15.     </style>
  16. </head>
  17. <body>
  18.     <canvas id="canvas"></canvas>
  19. <script>
  20.     var myCanvas = document.getElementById('canvas');
  21.     var ctx = myCanvas.getContext("2d");
  22.         myCanvas.width = document.documentElement.clientWidth;
  23.         myCanvas.height = document.documentElement.clientHeight;
  24.         function Ball(x,y){
  25.             this.x= x;  //圆心
  26.             this.y= y;  //圆心
  27.             this.r = 30;
  28.             this.dx = parseInt( Math.random()*8-4 );
  29.             this.dy = parseInt( Math.random()*8-4 );
  30.             this.style='rgba('+parseInt( Math.random()*255 )+','+parseInt( Math.random()*255 )+','+parseInt( Math.random()*255 )+',0.8)            ballArr.push(this);
  31.         }
  32.         Ball.prototype.render=function()
  33.         {
  34.             ctx.beginPath();
  35.             ctx.arc(this.x,this.y,this.r,0,Math.PI*2,true);
  36.             ctx.fillStyle = this.style; //在这有个错误的地方 fillstale 只是规定填充颜色, 而fill()才是渲染这个动作
  37.             ctx.fill();
  38.         }
  39.         Ball.prototype.update=function()
  40.         {
  41.             this.x = this.x + this.dx ;
  42.             this.y = this.y + this.dy ;
  43.             this.r--;
  44.             if(this.r<=0){
  45.                 this.godie();
  46.             }
  47.         }
  48.         Ball.prototype.godie = function()
  49.         {
  50.             for(var i =0; i<ballArr.length;  i++){
  51.                 if(ballArr[i]==this){
  52.                     ballArr.splice(i,1);
  53.                 }
  54.             }
  55.         }
  56.         var ballArr = [];
  57.         
  58.         myCanvas.onmousemove= function(event){
  59.             var e = event || window.event;
  60.             var a = new Ball(e.clientX,e.clientY);
  61.         }
  62.         setInterval(function(){
  63.             ctx.clearRect(0, 0, myCanvas.width, myCanvas.height);
  64.             for(var i = 0; i<ballArr.length; i++){
  65.                 ballArr[i].render();
  66.                 ballArr[i].update();
  67.             }
  68.         },20)
  69. </script>
  70. </body>
  71. </html>
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表