HTML5画布打酷例子大波浪进度图效果(带演示)
本文介绍了HTML5画布播放酷浪的效果,如下所示:正如您在上面看到的,本文旨在实现上述效果。
由于近期alloytouch写下拉刷新冷却负载效应。所以第一大浪的时间表是首选。
首先,包装大波浪图像的进展组件,其基本原理是利用画布绘制矢量和图片素材,产生特殊的波浪效果。
了解quadraticcurveto
的quadraticcurveto()方法添加一个指向当前路径通过使用指定的控制点代表两个贝塞尔曲线。
Javascript语法:
Context.quadraticCurveTo(CPX,CPY,x,y);
参数值
的单斜辉石贝塞尔控制点的X坐标
出的贝塞尔控制点的Y坐标
x终点的x坐标
y端点的y坐标
如:
Ctx.moveTo(20,20);
Ctx.quadraticCurveTo(20100200,20);
Ctx.stroke();
通过以上代码,我们可以画出两条贝塞尔曲线,具体原理如下图的效果:
试着画波浪
无功wavewidth = 300,
偏移量=0,
波高= 8,
wavecount = 5,
StartX = - 100,
初始位置= 208,
进展= 0,
progressstep = 1,
D2 = wavewidth / wavecount,
D = D2 / 2,
高清= 2,
C = document.getelementbyid(myCanvas),
CTX = c.getcontext(2D);
函数滴答(){
偏移量=5;
进步= progressstep;
如果(进展> 220 | |进展<0 progressstep = 1);
如果(- 1 *偏移量= D2)偏移量= 0;
ctx.clearrect(0, 0,c.width,c.height);
Ctx.beginPath();
无功offsety =初始位置的进展;
Ctx.moveTo(startx偏移,offsety);
对于(var i = 0;i < wavecount;i++){
var;
无功offsetx = DX + startx偏移;
Ctx.quadraticCurveTo(offsetx +高清,offsety +波高,offsetx + D,offsety);
Ctx.quadraticCurveTo(offsetx +高清+ D,offsety -波高,offsetx + D2,offsety);
}
Ctx.lineTo(startx + wavewidth,300);
Ctx.lineTo(startx,300);
Ctx.fill();
RequestAnimationFrame(打勾);
}
滴答();
可以看到无限运动的波:
这里主要需要,绘制区域比画布摆动隐藏图像校正,使用超过200200画布。
您可以尝试将代码克隆向下,并尝试将其绘制到一个大画布上理解。
这里,如果(- 1偏移量= D2)偏移= 0;实现无限循环。
D2是波波峰+波谷的长度,波峰+波谷开始相同的生命周期,从0开始,因此可以重置为0。
了解globalcompositeoperation
的globalcompositeoperation属性显示的颜色绘制到画布上结合现有的画布上的颜色。
大波浪时间表的绘制将使用如下:
ctx.globalcompositeoperation =之上的目的地;
目的地上的意义:画布上的现有内容将只保留在它与新图形重叠的地方。新的图形是根据内容绘制的。
当然,有globalcompositeoperation许多选项,在这里不一一列举,我们可以尝试设置其他属性调整叠加效果很酷。
全面实现
VaR img =新的图像();
函数滴答(){
…
…
Ctx.fill();
ctx.globalcompositeoperation =之上的目的地;
Ctx.drawImage(IMG,0, 0);
RequestAnimationFrame(打勾);
}
img.onload =函数(){
滴答();
};
img.src =资产/合金。png;
对于简单和直接的代码,封装加载器的代码将被删除,SRC直接通过新映像设置以加载图片。
在绘制矢量图,设置globalcompositeoperation,然后绘制企鹅图片,绘制顺序不能错。
最后
示例下载:演示
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。