当前位置: 首页 > news >正文

网站建设微信运营推广营销咨询服务

网站建设微信运营推广,营销咨询服务,qq空间做淘宝客网站,沈阳突发事件刚刚一、场景描述 利用js中的canvas画图来画图,爱心、动画。 二、问题拆解 第一个是:canvas画图相关知识。 第二个是:动画相关内容。 三、知识背景 3.1 canvas画图相关内容 canvas画图的基本步骤 获取页面上的canvas标签对象获取绘图上下文…

一、场景描述

利用js中的canvas画图来画图,爱心、动画。

二、问题拆解

第一个是:canvas画图相关知识。
第二个是:动画相关内容。

三、知识背景

3.1 canvas画图相关内容

canvas画图的基本步骤

  1. 获取页面上的canvas标签对象
  2. 获取绘图上下文 canvas.getContext(“2d")
  3. 绘图
  4. 绘制已定义的路径 strock()
    在这里插入图片描述

3.2 requestAnimationFrame(callback)方法 替代setTimeout和setInterval来设置动画

requestAnimationFrame这个方法的作用是 回掉函数的调用频率与显示器的刷新率一样。
用法如下所示

const zero = performance.now();  //获取当前时间戳function animate() {//利用现在时间戳减去程序开始时的时间戳,进行动画制作(求余再除 1 秒周期的动画)const value = ((performance.now() - zero) % 1000) / 1000;//清除当前区域的以画图形ctx.clearRect(0,0,width,height);//重新画图draw(100+10*value);console.log(value);//进行回调animationFrame = requestAnimationFrame(animate);
}

四、场景实现

画爱心
爱心的极坐标公式
x(t) = 16* sin^{3}(t)
y(t) = 13cos(t) - 5cos(2t) - 2cos(3t) - cos(4t)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body{background-color: black;}</style>
</head>
<body><canvas id="canvas"></canvas>
</body>
<script>//根据公式获取爱心图形路径上的点function getPointsXY(){var points = [];var x=0,y=0;for(var i = 0;i<Math.PI*2;i=i+0.01){x = 16 * Math.pow(Math.sin(i),3)*20;y = -(13 * Math.cos(i) - 5 * Math.cos(2*i) - 2 *  Math.cos(3*i) -  Math.cos(4*i))*20;points.push({x: canvas.width / 2 + x,y: canvas.height / 2 + y})}return points;}function init() {const width = window.innerWidth;const height = window.innerHeight;canvas.width = width;canvas.height = height;}//获取页面上的canvas标签const canvas = document.getElementById("canvas");init();   //获取绘图上下文const ctx = canvas.getContext("2d");//设置画笔颜色ctx.strokeStyle = 'pink';ctx.lineWidth = 5;//开始路径ctx.beginPath();//获取路径上的各个节点var points = getPointsXY();//依次连接各个点ctx.moveTo(points[0].x,points[0].y);for(let item of points){ctx.lineTo(item.x,item.y);ctx.moveTo(item.x,item.y);}ctx.lineTo(points[0].x,points[0].y);ctx.moveTo(0,0);// for(let item of points){//     ctx.lineTo(item.x,item.y);//     ctx.moveTo(item.x,item.y);// }ctx.lineTo(50,50);//闭合路径//ctx.closePath();//描述ctx.stroke();//ctx.fill();
</script>
</html>

图形动画

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><canvas id="canvas"></canvas>
</body>
<script>function draw(r){//圆心位置 (x, y), 半径, 起始角度, 结束角度, 方向 (true为顺时针, false为逆时针)ctx.beginPath();ctx.arc(width/2,height/2,r,0,Math.PI*2,false);let grad = ctx.createRadialGradient(width/2,height/2, 50, width/2,height/2, 200)grad.addColorStop(0, "pink"); // 设置渐变颜色grad.addColorStop(0.5, "yellow");grad.addColorStop(1, "lightblue");ctx.fillStyle = grad; // 设置fillStyle为当前的渐变对象ctx.fill();//闭合路径ctx.closePath();//描述ctx.stroke();ctx.beginPath();ctx.arc(width/2,height/2,5,0,Math.PI*2,false)//设置填充色ctx.fillStyle = "lightblue";//填充图ctx.fill();          }function animate() {const value = ((performance.now() - zero) % 1000) / 1000;ctx.clearRect(0,0,width,height);draw(100+10*value);console.log(value);animationFrame = requestAnimationFrame(animate);}const canvas = document.getElementById("canvas");//设置canvas画板大小const width = window.innerWidth;const height = window.innerHeight;canvas.width = width;canvas.height = height;const ctx = canvas.getContext("2d");let animationFrame = null;//开始路径ctx.beginPath();const zero = performance.now();console.log(zero);requestAnimationFrame(animate);//draw(100)//闭合路径ctx.closePath();//描述ctx.stroke();
</script>
</html>
http://www.ds6.com.cn/news/95909.html

相关文章:

  • wordpress弹框大连seo关键词排名
  • wordpress主题移动seo搜索引擎优化软件
  • 云南专业做网站多少钱最近七天的新闻大事
  • 网站开发一定要用框架吗小红书怎么做关键词排名优化
  • 国际贸易官方网站网站优化资源
  • 网络宣传网站建设定制天津百度搜索排名优化
  • 网站模版 小清新百度最新版下载
  • 马鞍山网站建设专业制网络营销课程个人总结
  • 上海高端工作室网站seo域名如何优化
  • ui网页设计是什么宁波seo快速优化
  • 新手做站必看 手把手教你做网站百度推广怎么收费
  • 域名查询是什么意思seo专员是什么职业
  • 新开传奇网站刚开一秒站长源码
  • 电子商务营销网站建设易观数据
  • 两台电脑一台做服务器 网站网络营销网站建设
  • 免费logo设计的网站东莞企业网站模板建站
  • 领导不愿意做招聘网站怎么办搜索引擎排名竞价
  • 广州市信息技术职业学校福州关键词优化平台
  • 广东网站建设便捷阿里指数在线查询
  • frontpage新建网站十大seo免费软件
  • 做钓鱼网站论坛西安百度关键词推广
  • 霍山网站建设镇江网站建站
  • 查看网站是用什么做的seo服务
  • 做网站买什么书危机公关处理方案
  • 怀化人大网站百度竞价个人开户
  • 聊城pc网站建设软件怎么进行推广
  • 学校网站建设会议讲话稿seo诊断分析工具
  • 用php做购物网站视频投诉百度最有效的电话
  • 美做天然居家居网站网站建设策划书
  • 哪里有网站开发深圳搜索竞价账户托管