js canvas实现QQ拨打电话特效


Posted in Javascript onMay 10, 2017

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

js canvas实现QQ拨打电话特效

本来是打算做 腾讯的贝塞尔曲线下拉刷新图。然后和朋友打了个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变量名是按照安卓绘图的习惯来的。

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

Javascript 相关文章推荐
浅谈JavaScript中面向对象技术的模拟
Sep 25 Javascript
JS实现下拉框的动态添加(附效果)
Apr 03 Javascript
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
用json方式实现在 js 中建立一个map
May 02 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
May 29 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
Jun 13 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
Aug 11 Javascript
JavaScript实现的背景自动变色代码
Oct 17 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
vue中如何使用ztree
Feb 06 Javascript
angularjs 缓存的使用详解
Mar 19 Javascript
详解微信小程序input标签正则初体验
Aug 18 Javascript
bootstrap弹出层的多种触发方式
May 10 #Javascript
详解使用vue脚手架工具搭建vue-webpack项目
May 10 #Javascript
微信小程序 支付后台java实现实例
May 09 #Javascript
使用 Vue.js 仿百度搜索框的实例代码
May 09 #Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
May 09 #Javascript
使用ES6语法重构React代码详解
May 09 #Javascript
JQuery实现定时刷新功能代码
May 09 #jQuery
You might like
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
介绍一下SQL Server里面的索引视图
2016/07/31 面试题
加拿大探亲邀请信
2014/01/28 职场文书
学校安全教育制度
2014/01/31 职场文书
摄影助理岗位职责
2014/02/07 职场文书
司机职责范本
2014/03/08 职场文书
求职简历自荐信
2014/06/18 职场文书
建筑结构施工求职信
2014/07/11 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
环卫工人慰问信
2015/02/15 职场文书
辩论赛新闻稿
2015/07/17 职场文书
员工安全责任协议书
2016/03/22 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
浅析MySQL如何实现事务隔离
2021/06/26 MySQL