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 相关文章推荐
Jquery中dialog属性小记
Sep 03 Javascript
对frameset、frame、iframe的js操作示例代码
Aug 16 Javascript
jquery+正则实现统一的表单验证
Sep 20 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
May 16 Javascript
AngularJs定制样式插入到ueditor中的问题小结
Aug 01 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
jQuery设计思想
Mar 07 Javascript
Vue2 使用 Echarts 创建图表实例代码
May 18 Javascript
详解react使用react-bootstrap当轮子造车
Aug 15 Javascript
jQuery滑动效果实现方法分析
Sep 05 jQuery
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
Mar 28 jQuery
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
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
javascript中Function类型详解
2015/04/28 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
Node.js Express安装与使用教程
2018/05/11 Javascript
php中and 和 &amp;&amp;出坑指南
2018/07/13 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
python使用tornado实现登录和登出
2018/07/28 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
python使用建议与技巧分享(一)
2020/08/17 Python
python实现计算器简易版
2020/12/17 Python
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
什么是Smart Navigation?
2016/07/03 面试题
《水乡歌》教学反思
2014/04/24 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python