日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

前段JS绘制动态海浪效果

發布時間:2024/1/18 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前段JS绘制动态海浪效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

細膩復雜動畫的制作一般要通過canvas來動態繪制,需要具備一定的算法基礎。

以下js是模擬海浪效果的算法(可直接使用),分享給大家。

<div id="wave" style="width: 200px;height: 100px;"></div> <script>(function () {//自定義命名空間var homePage = {};homePage.color = "#87d6fe"; //設置wave顏色homePage.waveEffect = function () {homePage.wave = document.getElementById("wave"); //選中渲染元素homePage.canvas = document.createElement('canvas');homePage.ctx = homePage.canvas.getContext('2d');homePage.canvas.width = wave.offsetWidth;homePage.canvas.height = wave.offsetHeight;homePage.wave.appendChild(homePage.canvas);homePage.animate();homePage.r = 50 / 100; //設置水面高度(占比畫布)};homePage.animate = function () {var requestAnimationFrame =window.requestAnimationFrame ||window.mozRequestAnimationFrame ||window.webkitRequestAnimationFrame ||window.msRequestAnimationFrame ||function (callback) {window.setTimeout(callbacks, 1000 / 60); //以一個恰當的幀數渲染動畫};homePage.loop();};homePage.step = 0;homePage.loop = function () {homePage.step += 3; //設置浪花緩急var changeHeight = 15; //設置浪花大小if (homePage.r == 1 || homePage.r == 0) {changeHeight = 0;}var height = homePage.canvas.height - homePage.canvas.height * homePage.r;var angle = homePage.step * Math.PI / 180;var deltaHeight = Math.cos(angle) * changeHeight;var deltaHeightRight = Math.sin(angle) * changeHeight;homePage.ctx.clearRect(0, 0, homePage.canvas.width, homePage.canvas.height);homePage.ctx.beginPath();homePage.ctx.lineWidth = 0;homePage.ctx.fillStyle = homePage.color;homePage.ctx.moveTo(0, height + deltaHeight - changeHeight);homePage.ctx.bezierCurveTo(homePage.canvas.width / 2, height + deltaHeight, homePage.canvas.width / 2, height + deltaHeightRight, homePage.canvas.width, height + deltaHeightRight); //繪制一條三次貝塞爾曲線:homePage.ctx.lineTo(homePage.canvas.width, homePage.canvas.height);homePage.ctx.lineTo(0, homePage.canvas.height);homePage.ctx.lineTo(0, height + deltaHeight - changeHeight);homePage.ctx.closePath();homePage.ctx.fill();requestAnimationFrame(homePage.loop);};window.HomePageJS = homePage;})()HomePageJS.waveEffect();</script>

?

總結

以上是生活随笔為你收集整理的前段JS绘制动态海浪效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。