基于Canvas的画线动画效果
2017-11-20 14:41
190 查看
想着用js实现一个画线动画,借助Canvas实现了。动画效果:
手机端访问 https://sagitarioo.github.io/Personal/htmlCode/linePaint/lineShow.html
电脑端访问 https://sagitarioo.github.io/Personal/htmlCode/linePaint/lineShow01.html
手机与电脑显示区别主要在于屏幕长宽比例。
实现代码:
<!DOCTYPE html>
<html>
<head>
<title>lineShowOnPhone</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<style type="text/css">
#vas{
width: 100%;
border: 1px solid #f0f0f0;
margin: auto;
}
</style>
<canvas id="vas">
</canvas>
<script type="text/javascript">
var canvas=$("#vas");
canvas[0].width=1000;
canvas[0].height=1000;
var context=canvas[0].getContext('2d');
context.lineWidth=4;
context.strokeStyle='#f00';
context.moveTo(500,500);
var intervals,intervalss;
var i=1;
var x=500,y=500;
var len=50;//边距
var m=500,n=500,p=500,q=500;
var times=21//circle times
var intervalTime=1;//time
var speed=10;//speed
var d=new Date();
var stime=d.getTime();
intervals=setInterval(draw,100);
function draw(){
x=p-Math.pow(-1,i)*len*i;
if((Math.pow(-1,i)<0)&&(m<x) || (Math.pow(-1,i)>0)&&(m>x)){
m=m-speed*Math.pow(-1,i);
context.lineTo(m,y);
context.stroke();
}else{
clearInterval(intervals);
if(i<times){
intervalss=setInterval(draws,intervalTime);
p=p-Math.pow(-1,i)*len*i;
}
var de=new Date();
var etime=de.getTime();
var runtime=etime-stime;
console.log("run time="+runtime);
}
}
function draws(){
y=q-Math.pow(-1,i)*len*i;
if((Math.pow(-1,i)<0)&&(n<y) || (Math.pow(-1,i)>0)&&(n>y)){
n=n
4000
-speed*Math.pow(-1,i);
context.lineTo(x,n);
context.stroke();
}else{
clearInterval(intervalss);
intervals=setInterval(draw,intervalTime);
q=q-Math.pow(-1,i)*len*i;
i++;
}
}
</script>
</body>
</html>
手机端访问 https://sagitarioo.github.io/Personal/htmlCode/linePaint/lineShow.html
电脑端访问 https://sagitarioo.github.io/Personal/htmlCode/linePaint/lineShow01.html
手机与电脑显示区别主要在于屏幕长宽比例。
实现代码:
<!DOCTYPE html>
<html>
<head>
<title>lineShowOnPhone</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>
<style type="text/css">
#vas{
width: 100%;
border: 1px solid #f0f0f0;
margin: auto;
}
</style>
<canvas id="vas">
</canvas>
<script type="text/javascript">
var canvas=$("#vas");
canvas[0].width=1000;
canvas[0].height=1000;
var context=canvas[0].getContext('2d');
context.lineWidth=4;
context.strokeStyle='#f00';
context.moveTo(500,500);
var intervals,intervalss;
var i=1;
var x=500,y=500;
var len=50;//边距
var m=500,n=500,p=500,q=500;
var times=21//circle times
var intervalTime=1;//time
var speed=10;//speed
var d=new Date();
var stime=d.getTime();
intervals=setInterval(draw,100);
function draw(){
x=p-Math.pow(-1,i)*len*i;
if((Math.pow(-1,i)<0)&&(m<x) || (Math.pow(-1,i)>0)&&(m>x)){
m=m-speed*Math.pow(-1,i);
context.lineTo(m,y);
context.stroke();
}else{
clearInterval(intervals);
if(i<times){
intervalss=setInterval(draws,intervalTime);
p=p-Math.pow(-1,i)*len*i;
}
var de=new Date();
var etime=de.getTime();
var runtime=etime-stime;
console.log("run time="+runtime);
}
}
function draws(){
y=q-Math.pow(-1,i)*len*i;
if((Math.pow(-1,i)<0)&&(n<y) || (Math.pow(-1,i)>0)&&(n>y)){
n=n
4000
-speed*Math.pow(-1,i);
context.lineTo(x,n);
context.stroke();
}else{
clearInterval(intervalss);
intervals=setInterval(draw,intervalTime);
q=q-Math.pow(-1,i)*len*i;
i++;
}
}
</script>
</body>
</html>
相关文章推荐
- IE 下VML动画的奇怪现象:GWTCanvas基于定时器的图形动画当鼠标移动时停止动画效果(直接用VML写代码效果也一样)
- 7 款基于 HTML5 Canvas 的超炫 3D 动画效果
- JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
- 基于HTML5 Canvas粒子效果文字动画特效
- 基于canvas使用粒子拼出你想要的文字[2]——粒子的动画效果
- 基于canvas实现物理运动效果与动画效果(一)
- 7 款基于 HTML5 Canvas 的超炫 3D 动画效果
- canvas绘制动画效果
- 基于OpenCV的视频图像组态 (12): 翻转式由远到近动画效果
- Canvas实现绚丽的倒计时效果(动画效果)
- 使用canvas画的圆形水球波纹带进度条的效果,里面使用的是requestAnimationFrame方法(),所以动画的执行只在区域可见的时候才会执行
- 基于JQuery的数字改变的动画效果--可用来做计数器
- 简单的Canvas刮刮乐带动画效果的实例
- 基于canvas实现的钟摆效果完整实例
- 7个惊艳的HTML5 Canvas动画效果及源码
- BaseAnimation是基于开源的APP,致力于收集各种动画效果(最新版本1.3)
- canvas动画效果
- HTML5 Canvas动画效果演示 - 流浪的鱼 - 博客频道 - CSDN.NET
- 基于JS快速实现导航下拉菜单动画效果附源码下载
- 过渡与动画 - 缓动效果&基于贝塞尔曲线的调速函数