*新闻详情页*/>
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>
以上便是本文的所有內容,期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。
Copyright © 2002-2020 html网页制作_php网页制作_网页设计稿_网页编辑工具_学生网页设计模板 版权所有 (网站地图) 粤ICP备10235580号