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


相关推荐: Internet Explorer官网直接进入 IE浏览器在线体验版网址  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  android nfc常用标签读取总结  如何用AWS免费套餐快速搭建高效网站?  nodejs redis 发布订阅机制封装实现方法及实例代码  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Python面向对象测试方法_mock解析【教程】  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  如何在宝塔面板创建新站点?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Laravel怎么为数据库表字段添加索引以优化查询  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  如何有效防御Web建站篡改攻击?  JavaScript常见的五种数组去重的方式  在Oracle关闭情况下如何修改spfile的参数  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  如何在云主机上快速搭建网站?  HTML 中动态设置元素 name 属性的正确语法详解  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何在Windows服务器上快速搭建网站?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  如何利用DOS批处理实现定时关机操作详解  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  如何用西部建站助手快速创建专业网站?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  如何正确选择百度移动适配建站域名?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel中的withCount方法怎么高效统计关联模型数量  如何在腾讯云免费申请建站?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何基于云服务器快速搭建网站及云盘系统?  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  如何快速查询域名建站关键信息?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  详解vue.js组件化开发实践  北京的网站制作公司有哪些,哪个视频网站最好?