wave("canvas1", 180, "#f9b67e", 4000);
wave("canvas2", 170, '#FF9134', 6500);
/**
* 底部波浪
* @param $canvasID canvasID
* @param $progress 波浪位置的高度
* @param $maveColor 波浪颜色
* @param $time 运动周期
*/
function wave($canvasID, $progress, $maveColor, $time) {
let waveWidth = 3300,
offset = 0,
waveHeight = 30, // 波浪高度
waveCount = 4, // 波浪个数
startX = -1000,
startY = 212, // canvas 高度
progress = $progress,// 波浪位置的高度
d2 = waveWidth / waveCount,// 单个波浪的宽度
d = d2 / 2,
hd = d / 2,
c = document.getElementById($canvasID),
ctx = c.getContext("2d");
c.width = 1920;
c.height = 212;
function move() {
offset -= 5;
if (-1 * offset === d2) offset = 0;
ctx.clearRect(0, 0, c.width, c.height);
ctx.fillStyle = $maveColor;
ctx.beginPath();
let offsetY = startY - progress;
ctx.moveTo(startX - offset, offsetY);
for (let i = 0; i < waveCount; i++) {
let dx = i * d2;
let offsetX = dx + startX - offset;
ctx.quadraticCurveTo(offsetX + hd, offsetY + waveHeight, offsetX + d, offsetY);
ctx.quadraticCurveTo(offsetX + hd + d, offsetY - waveHeight, offsetX + d2, offsetY);
}
ctx.lineTo(startX + waveWidth, 3000);
ctx.lineTo(startX, 3000);
ctx.fill();
setTimeout(move, $time / 60); //速度
}
move();
}
Canvas波浪效果
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...