js canvas实现QQ拨打电话特效

发布时间 - 2026-01-11 01:03:18    点击率:

首先呢,先给特效。自己找手机录的,有点不清楚,请见谅!

本来是打算做 腾讯的贝塞尔曲线下拉刷新图。然后和朋友打了个QQ电话,稍微注意了一下未接通时候的动画。然后就想着实现以下。

这里要注意的就是:

canvas的中心点经过变化到canvas的正中后
canvas的 Y轴由上至下 是从(-,+);而数学坐标系的Y轴由上至下 是从(+,-)的。

首先看一下html代码。就至少简单的添加一个canvas,基本没进行其他操作。

HTML代码

<canvas id="canvas1" width="500" height="500"></canvas>

JS代码

var paint, r;    //设置画笔和半径
var width, height; //获得canvas的长度和宽度
var count = 0;   //设置正铉曲线的便宜量
var colors = ["#66ccff", "#ff0000"];

/*程序入口*/
function main() {
  var canvas1 = document.getElementById("canvas1");
  paint = canvas1.getContext("2d");
  width = paint.canvas.width;
  height = paint.canvas.height;
  r = width / 2;
  start();
  setInterval(start, 200);
}

/*开始进行清除和绘制*/
function start() {
  paint.clearRect(0, 0, width, height);
  drawXY();
  drawSin();
  paint.restore();
}

/*绘制一个坐标系*/
function drawXY() {
  paint.save();
  paint.translate(r, r);
  paint.beginPath();
  paint.lineWidth = 1;
  paint.moveTo(0, -r);
  paint.lineTo(0, r);
  paint.stroke();

  paint.lineWidth = 1;
  paint.moveTo(-r, 0);
  paint.lineTo(r, 0);
  paint.stroke();
}

/*正弦曲线可表示为y=Asin(ωx+φ)+k,定义为函数y=Asin(ωx+φ)+k在直角坐标系上的图象,*/

/*绘制sin正弦图像*/
function drawSin() {
  paint.save();
  count++;//设置每一刻的偏移量
  var i, j, rad, y;
  for (j = 0; j < 2; j++) {
    for (i = -1000; i < 1000; i++) {
      paint.beginPath();
      paint.strokeStyle = colors[j];
      rad = i * Math.PI / 180;
      y = -20 * Math.sin(rad - (count + j));
      paint.arc(i, y, 0.3, 0, 2 * Math.PI, false);
      paint.stroke();
    }
  }

  paint.restore();
}

JS中需要注意的就是。在对图像进行计时改变的时候,一定要的先进行清除。之后要对绘制过的图像进行保存和恢复。不然程序会出现重叠或者无法显示等bug。

这里定义的paint变量名是按照安卓绘图的习惯来的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # canvas  # QQ拨打电话  # js如何调用qq互联api实现第三方登录  # JS判断客服QQ号在线还是离线状态的方法  # js仿QQ中对联系人向左滑动、滑出删除按钮的操作  # javascript仿qq界面的折叠菜单实现代码  # js QQ客服悬浮效果实现代码  # 用js实现QQ在线查询功能  # 是从  # 上至  # 中心点  # 腾讯  # 不清楚  # 要注意  # 在对  # 要对  # 看一下  # 需要注意  # 大家多多  # 先给  # 塞尔  # 每一刻  # 变量名  # 偏移量  # 打了个  # 然后就  # 注意了  # id 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  javascript中的try catch异常捕获机制用法分析  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  如何利用DOS批处理实现定时关机操作详解  利用JavaScript实现拖拽改变元素大小  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  海南网站制作公司有哪些,海口网是哪家的?  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel如何创建自定义Facades?(详细步骤)  bing浏览器学术搜索入口_bing学术文献检索地址  如何快速搭建高效可靠的建站解决方案?  Laravel如何记录自定义日志?(Log频道配置)  Swift中switch语句区间和元组模式匹配  详解Huffman编码算法之Java实现  打造顶配客厅影院,这份100寸电视推荐名单请查收  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  如何确保FTP站点访问权限与数据传输安全?  BootStrap整体框架之基础布局组件  大同网页,大同瑞慈医院官网?  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  C++用Dijkstra(迪杰斯特拉)算法求最短路径  网站制作免费,什么网站能看正片电影?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  如何在Windows环境下新建FTP站点并设置权限?  使用spring连接及操作mongodb3.0实例  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Laravel如何实现API版本控制_Laravel版本化API设计方案  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  C++时间戳转换成日期时间的步骤和示例代码  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何在云主机上快速搭建网站?  php json中文编码为null的解决办法  bootstrap日历插件datetimepicker使用方法  做企业网站制作流程,企业网站制作基本流程有哪些?  SQL查询语句优化的实用方法总结  如何在香港服务器上快速搭建免备案网站?  Laravel如何实现数据库事务?(DB Facade示例)  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  如何确认建站备案号应放置的具体位置?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】