canvas探照灯实际效果的示例编码

日期:2021-02-23 类型:科技新闻 

关键词:html网页制作,php网页制作,网页设计稿,网页编辑工具,学生网页设计模板

canvas中的clip()方式用于从初始画布中裁切随意样子和规格。1旦裁切了某个地区,则全部以后的制图都会被限定在被裁切的地区内(不可以浏览画布上的别的地区)

还可以在应用clip()方式前根据应用save()方式对当今画布地区开展储存,并在之后的随意時间根据restore()方式对其开展修复

接下来应用clip()方式完成1个探照灯实际效果

</iframe>
<button id="btn">转换</button>
<button id="con">中止</button>
<canvas id="canvas" width="400" height="290" style="border:1px solid black">当今访问器不适用canvas,请拆换访问器后再试</canvas>
<script> btn.onclick = function(){history.go();}
con.onclick = function(){ if(this.innerHTML == '中止'){ this.innerHTML = '修复';
        clearInterval(oTimer);
    }else{ this.innerHTML = '中止'; 
        oTimer = setInterval(fnInterval,50);
    }
} var canvas = document.getElementById('canvas'); //储存画布宽高
var H=290,W=400; //储存探照灯
var ball = {}; //储存相片
var IMG; //储存相片详细地址
var URL = 'http://sandbox.runjs.cn/uploads/rs/26/ddzmgynp/chunfen.jpg'; function initial(){ if(canvas.getContext){ var cxt = canvas.getContext('2d'); var tempR = Math.floor(Math.random()*30+20); var tempX = Math.floor(Math.random()*(W-tempR) + tempR); var tempY = Math.floor(Math.random()*(H-tempR) + tempR)        
        ball = {
            x:tempX,
            y:tempY,
            r:tempR,
            stepX:Math.floor(Math.random() * 21 ⑴0),
            stepY:Math.floor(Math.random() * 21 ⑴0)
        };
        IMG = document.createElement('img');
        IMG.src=URL;
        IMG.onload = function(){
            cxt.drawImage(IMG,0,0);
      }//欢迎添加全栈开发设计沟通交流圈1起学习培训沟通交流:582735936
    ]//朝向1⑶年前端开发人员
  }   //协助提升技术性短板,提高逻辑思维工作能力
        }   
    }    
} function update(){
    ball.x += ball.stepX;
    ball.y += ball.stepY; 
    bumpTest(ball);
} function bumpTest(ele){ //左边
    if(ele.x <= ele.r){
        ele.x = ele.r;
        ele.stepX = -ele.stepX;
    } //右边
    if(ele.x >= W - ele.r){
        ele.x = W - ele.r;
        ele.stepX = -ele.stepX;
    } //上侧
    if(ele.y <= ele.r){
        ele.y = ele.r;
        ele.stepY = -ele.stepY;
    } //下侧
    if(ele.y >= H - ele.r){
        ele.y = H - ele.r;
        ele.stepY = -ele.stepY;
    }
} function render(){ //重设画布高宽比,做到清空画布的实际效果
 canvas.height = H; if(canvas.getContext){ var cxt = canvas.getContext('2d');
        cxt.save(); //将画布情况涂黑
 cxt.beginPath();
        cxt.fillStyle = '#000';
        cxt.fillRect(0,0,W,H); //3D渲染探照灯
 cxt.beginPath();
        cxt.arc(ball.x,ball.y,ball.r,0,2*Math.PI);
        cxt.fillStyle = '#000';
        cxt.fill(); 
        cxt.clip(); //因为应用了clip(),画布情况照片会出現在clip()地区内
 cxt.drawImage(IMG,0,0);
        cxt.restore();
      }//欢迎添加全栈开发设计沟通交流圈1起学习培训沟通交流:582735936
    ]//朝向1⑶年前端开发人员
  }   //协助提升技术性短板,提高逻辑思维工作能力
    }

}
initial();
clearInterval(oTimer); function fnInterval(){ //升级健身运动情况
 update(); //3D渲染
 render();    
} var oTimer = setInterval(fnInterval,50); 
</script> 

以上便是本文的所有內容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。