成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > Canvas制作的下雨動(dòng)畫(huà)的示例

Canvas制作的下雨動(dòng)畫(huà)的示例

熱門(mén)標(biāo)簽:鎮(zhèn)江智能外呼系統(tǒng)有效果嗎 云南大理400電話(huà)申請(qǐng)官方 四川點(diǎn)撥外呼系統(tǒng) 當(dāng)涂高德地圖標(biāo)注 電銷(xiāo)機(jī)器人電話(huà)用什么卡 南寧點(diǎn)撥外呼系統(tǒng)哪家公司做的好 黃島區(qū)地圖標(biāo)注 成都智能外呼系統(tǒng)平臺(tái) 江蘇智能電銷(xiāo)機(jī)器人哪家好

簡(jiǎn)介

在codepen上看到一個(gè)Canvas做的下雨效果動(dòng)畫(huà),感覺(jué)蠻有意思的。就研究了下,這里來(lái)分享下,實(shí)現(xiàn)技巧。

效果截圖:

Canvas動(dòng)畫(huà)基礎(chǔ)

大家都知道,Canvas其實(shí)只是一個(gè)畫(huà)板。我們可以應(yīng)用canvas的api在上面繪制各種圖形。

Canvas 2D 的API:https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D

那么Canvas繪制動(dòng)畫(huà)的步驟就是:

  1. 繪制第一幀圖形(利用API繪圖)
  2. 清空畫(huà)板(應(yīng)用clearRect()或fillRect())
  3. 繪制下一幀動(dòng)畫(huà)

用什么來(lái)控制動(dòng)畫(huà)每一幀的繪制時(shí)間呢?大家很容易想到 window.setInterval()和window.setTimeout()。沒(méi)錯(cuò)用這兩個(gè)也可以。除此之外,后來(lái)又出現(xiàn)一個(gè)新的方法:window.requestAnimationFrame(callback)。

requestAnimationFrame會(huì)告訴瀏覽器你要繪制一個(gè)動(dòng)畫(huà)。讓瀏覽器要重繪時(shí)調(diào)用你指定的方法(callback)來(lái)繪制你的動(dòng)畫(huà)。

使用方法如下:

function anim() {
    ctx.fillStyle = clearColor;
    ctx.fillRect(0,0,w,h);
    for(var i in drops){
        drops[i].draw();
    }
    requestAnimationFrame(anim);
}

一般情況下優(yōu)先使用requestAnimationFrame能保持動(dòng)畫(huà)繪制的頻率和瀏覽器重繪的頻率一致。不幸的是requestAnimationFrame的兼容性還不是很好。IE9以下和addroid 4.3以下好像不支持這個(gè)屬性。不支持的瀏覽器要用setInterval或setTimeout做兼容。

雨滴下落效果

首先來(lái)講講雨滴下落的效果如何制作。雨滴其實(shí)是一個(gè)長(zhǎng)方形,然后加殘影。殘影的繪制可以說(shuō)是雨滴下落的關(guān)鍵。殘影是通過(guò)在前進(jìn)的方向每一幀都繪制一個(gè)半透明的背景和一個(gè)長(zhǎng)方形,然后前面繪制的圖形疊加產(chǎn)生的效果。由于前進(jìn)方向的圖形最后繪制,所以顯得明亮,后面的圖形疊加的比較多,所以視覺(jué)上減弱。整體看起來(lái)后面的就像殘影。這里繪制具有透明度背景是關(guān)鍵,否則產(chǎn)生不了疊加效果。

那么來(lái)繪制個(gè)雨滴看看。首先準(zhǔn)備一個(gè)畫(huà)板:

html代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>霓虹雨</title>
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <style type="text/css">
        .bg {
            background: #000;
            overflow: hidden;
        }
    </style>

</head>
<body class="bg">
<canvas id="canvas-club"></canvas>
<script type="text/javascript" src="raindrop.js"></script>
</body>
</html>

我在js文件里繪制動(dòng)畫(huà)(raindrop.js),代碼如下:

var c = document.getElementById("canvas-club");
var ctx = c.getContext("2d");//獲取canvas上下文
var w = c.width = window.innerWidth;
var h = c.height = window.innerHeight;//設(shè)置canvas寬、高
var clearColor = 'rgba(0, 0, 0, .1)';//畫(huà)板背景,注意最后的透明度0.1 這是產(chǎn)生疊加效果的基礎(chǔ)

function random(min, max) {
    return Math.random() * (max - min) + min;
}

function RainDrop(){}
//雨滴對(duì)象 這是繪制雨滴動(dòng)畫(huà)的關(guān)鍵
RainDrop.prototype = {
    init:function(){
        this.x =  random(0, w);//雨滴的位置x
        this.y = 0;//雨滴的位置y
        this.color = 'hsl(180, 100%, 50%)';//雨滴顏色 長(zhǎng)方形的填充色
        this.vy = random(4, 5);//雨滴下落速度
        this.hit = random(h * .8, h * .9);//下落的最大值
        this.size = 2;//長(zhǎng)方形寬度
    },
    draw:function(){
        if (this.y < this.hit) {
            ctx.fillStyle = this.color;
            ctx.fillRect(this.x, this.y, this.size, this.size * 5);//繪制長(zhǎng)方形,通過(guò)多次疊加長(zhǎng)方形,形成雨滴下落效果
        }
        this.update();//更新位置
    },
    update:function(){
        if(this.y < this.hit){
            this.y += this.vy;//未達(dá)到底部,增加雨滴y坐標(biāo)
        }else{
            this.init();
        }
    }
};

function resize(){
    w = c.width = window.innerWidth;
    h = c.height = window.innerHeight;
}

//初始化一個(gè)雨滴
var r = new RainDrop();
r.init();

function anim() {
    ctx.fillStyle = clearColor;//每一幀都填充背景色
    ctx.fillRect(0,0,w,h);//填充背景色,注意不要用clearRect,否則會(huì)清空前面的雨滴,導(dǎo)致不能產(chǎn)生疊加的效果
    r.draw();//繪制雨滴
    requestAnimationFrame(anim);//控制動(dòng)畫(huà)幀
}

window.addEventListener("resize", resize);
//啟動(dòng)動(dòng)畫(huà)
anim();

漣漪效果

接著來(lái)繪制漣漪效果。與繪制雨滴的方式類(lèi)似,也是通過(guò)具有透明度的背景來(lái)疊加前面的圖像產(chǎn)生內(nèi)陰影的效果。

代碼如下(rippling.js):

var c = document.getElementById("canvas-club");
var ctx = c.getContext("2d");//獲取canvas上下文
var w = c.width = window.innerWidth;
var h = c.height = window.innerHeight;//設(shè)置canvas寬、高
var clearColor = 'rgba(0, 0, 0, .1)';//畫(huà)板背景,注意最后的透明度0.1 這是產(chǎn)生疊加效果的基礎(chǔ)

function random(min, max) {
    return Math.random() * (max - min) + min;
}

function Rippling(){}
//漣漪對(duì)象 這是漣漪動(dòng)畫(huà)的主要部分
Rippling.prototype = {
    init:function(){
        this.x = random(0,w);//漣漪x坐標(biāo)
        this.y = random(h * .8, h * .9);//漣漪y坐標(biāo)
        this.w = 2;//橢圓形漣漪寬
        this.h = 1;//橢圓漣漪高
        this.vw = 3;//寬度增長(zhǎng)速度
        this.vh = 1;//高度增長(zhǎng)速度
        this.a = 1;//透明度
        this.va = .96;//漣漪消失的漸變速度
    },
    draw:function(){
        ctx.beginPath();
        ctx.moveTo(this.x, this.y - this.h / 2);
        //繪制右弧線(xiàn)
        ctx.bezierCurveTo(
            this.x + this.w / 2, this.y - this.h / 2,
            this.x + this.w / 2, this.y + this.h / 2,
            this.x, this.y + this.h / 2);
        //繪制左弧線(xiàn)
        ctx.bezierCurveTo(
            this.x - this.w / 2, this.y + this.h / 2,
            this.x - this.w / 2, this.y - this.h / 2,
            this.x, this.y - this.h / 2);
        
        ctx.strokeStyle = 'hsla(180, 100%, 50%, '+this.a+')';
        ctx.stroke();
        ctx.closePath();
        this.update();//更新坐標(biāo)
    },
    update:function(){
        if(this.a > .03){
            this.w += this.vw;//寬度增長(zhǎng)
            this.h += this.vh;//高度增長(zhǎng)
            if(this.w > 100){
                this.a *= this.va;//當(dāng)寬度超過(guò)100,漣漪逐漸變淡消失
                this.vw *= .98;//寬度增長(zhǎng)變緩慢
                this.vh *= .98;//高度增長(zhǎng)變緩慢
            }
        } else {
            this.init();
        }

    }
};

function resize(){
    w = c.width = window.innerWidth;
    h = c.height = window.innerHeight;
}

//初始化一個(gè)漣漪
var r = new Rippling();
r.init();

function anim() {
    ctx.fillStyle = clearColor;
    ctx.fillRect(0,0,w,h);
    r.draw();
    requestAnimationFrame(anim);
}

window.addEventListener("resize", resize);
//啟動(dòng)動(dòng)畫(huà)
anim();

總結(jié)

這樣大家對(duì)整個(gè)下雨效果的制作方法,應(yīng)該有一定的了解了。Canvas用來(lái)繪制動(dòng)畫(huà)的效果確實(shí)能讓人眼前一亮,讓web的視覺(jué)效果提升一大截。發(fā)動(dòng)自己的智慧,相信能做出更多奇妙的動(dòng)畫(huà)。這是我越來(lái)越喜歡web的原因之一吧 O(∩_∩)O~~。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:咸寧 南京 酒泉 十堰 佳木斯 淮安 廣西 西寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Canvas制作的下雨動(dòng)畫(huà)的示例》,本文關(guān)鍵詞  Canvas,制作,的,下雨,動(dòng),畫(huà)的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Canvas制作的下雨動(dòng)畫(huà)的示例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Canvas制作的下雨動(dòng)畫(huà)的示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    激情福利在线| xxxx国产精品| 国产亚洲精品激情久久| 欧美日韩一卡二卡三卡| 欧美色图色综合| 日本黄色大片在线观看| 国产欧美日韩第一页| 亚洲三级理论片| 中文字幕亚洲专区| 99伊人久久| 久久精品久久99精品久久| 99精品免费在线观看| 欧美日韩视频精品二区| 538在线视频观看| 飘雪影视在线观看免费观看| 999热视频在线观看| 正义之心1992免费观看全集完整版| 九九大香尹人视频免费| 精品视频1区2区| 91精品久久久久久久久不口人| 黑森林国产精品av| 激情aⅴ欧美一区二区欲海潮| 黄色小视网站| 欧美大片顶级少妇| 91青草视频久久| 亚洲啊v在线| 亚洲三区在线播放| 怡红院av亚洲一区二区三区h| 狠久久av成人天堂| 成人网页在线观看| 亚洲调教视频在线观看| 国产精品毛片久久久久久久| 亚洲精品福利免费在线观看| 国产在线视频福利| 亚洲黄色一区| 亚洲成av人影片在线观看| 久久夜色精品国产亚洲aⅴ| 在免费jizzjizz在线视频| 韩国黄色一级片| 天然素人一区二区视频| 日韩少妇内射免费播放18禁裸乳| 久久免费少妇高潮久久精品99| 国产精品蜜臀| 成人久久精品人妻一区二区三区| 青青青爽久久午夜综合久久午夜| 国产区美女在线| 久久久久久久一区二区| 亚洲欧美中文日韩v在线观看| 日韩精品一区二区视频| 亚洲国产成人精品女人久久久| 亚洲 欧美 中文字幕| 四虎永久在线精品免费网址| 中文字幕在线观看日韩| 国产91精品最新在线播放| 欧美一区二区三区视频| 国产成人福利网站| 性一爱一乱一交一视频| 亚洲3atv精品一区二区三区| 欧美日韩美女在线观看| 国产无遮挡一区二区三区毛片日本| 国产精品国产三级国产专播精品人| 久久婷婷国产综合精品青草| 欧美一区二区不卡视频| 中国人体摄影一区二区三区| 中文字幕免费观看| 久久久精品视频网站| 成人在线高清免费| 老司机aⅴ毛片免费观看| 国产一区在线观看视频| 欧美成人免费全部网站| www久久久com| 超碰av在线免费观看| wwwwww日本| 日日夜夜天堂| 亚洲日本视频在线| 欧美特级限制片免费在线观看| 国产精品入口麻豆完整版| 刘亦菲一区二区三区免费看| 国产51人人成人人人人爽色哟哟| 亚洲综合色激情五月| 日韩精选在线| 91网站免费观看| 成人动漫视频在线观看完整版| 香蕉视频在线免费| 亚洲国产成人综合| 天堂视频在线观看免费| 亚洲av无码专区在线| 日本视频在线播放| 久久se精品一区精品二区| 天堂а√在线最新版中文在线| 欧美人与性动交α欧美精品| 欧美妇女性影城| 欧美精品一区二区三区很污很色的| 91精品国产三级| 少妇无码av无码专区在线观看| 实拍女处破www免费看| 国产免费久久久久| 国产成人综合欧美精品久久| 日韩区国产区| jizzjizzjizz亚洲日本| 国产真实的和子乱拍在线观看| 91亚洲免费视频| 免费毛片一区二区三区| 豆国产97在线 | 亚洲| 亚洲精品自产拍在线观看app| 成人在线免费观看网站| 中文网丁香综合网| 宅男深夜国产| 国产玉足榨精视频在线观看| 欧美福利一区二区| 特级片在线观看| 91九色综合久久| 国产精品麻豆视频| 天堂影院一区二区| 中文字幕精品av| 成片免费观看视频| 牛牛精品成人免费视频| 女人帮男人橹视频播放| 91文字幕巨乱亚洲香蕉| 欧美视频在线免费看| 九九热精品视频在线观看| 国产女人在线视频| 在线观看国产福利视频| 黄色羞羞视频在线观看| 国产福利91精品| 人人澡人人爽| 国产精品视频一区二区三区| 伊人色综合一区二区三区影院视频| 91精品国产毛片武则天| 国产日韩欧美激情| 高清中文字幕一区二区三区| 7777狠狠狠琪琪电影| 国产suv精品一区二区883| 欧美日韩精品免费观看视欧美高清免费大片| 暖暖影院日本高清...免费| 三级久久三级久久| 国产成人免费av在线| 亚洲美女屁股眼交| 六月丁香激情网| 欧美另类第一页| 欧美一区视久久| 天堂在线www天堂中文在线| 精品一区二区久久久| 国产日韩欧美在线| 一级黄色免费在线观看| 欧美在线一区视频| 丝袜诱惑制服诱惑色一区在线观看| 日本熟妇一区二区| seba5欧美综合另类| 国产69久久精品成人| 三级毛片电影网站| 99九九电视剧免费观看| 久热re这里精品视频在线6| 国产精品美女网站| 成人手机在线播放| 免费在线观看亚洲视频| 最新av在线播放| 亚州精品视频| 伦一区二区三区中文字幕v亚洲| 国产免费一区视频观看免费| 麻豆视频免费网站| 欧美亚洲免费高清在线观看| 亚洲精品无码专区在线播放| h在线观看网站| 日本免费在线精品| 精品中文字幕在线播放| 亚洲国产二区| 菠萝蜜视频网址| 国产成人高清激情视频在线观看| 精品91自产拍在线观看一区| 中文字幕免费观看一区| 欧美在线三区| 中文一区在线| 日韩欧美国产三级电影视频| sm国产在线调教视频| 国产国语老龄妇女a片| 一区二区三区四区视频精品免费| 青青草成人免费在线视频| 一二三四社区在线视频| 欧美日本不卡| 高清国语自产拍免费一区二区三区| 国产xxxx做受性欧美88| 色偷偷偷亚洲综合网另类| 日本xxxx高清色视频| 特大巨黑人吊性xxxxn38| 欧美无砖专区一中文字| 精品久久美女| 国产v综合v| 欧美精品久久久久性色| 日韩在线视频精品| 日韩三级小视频| 国产无色aaa| 日韩精品在线观看视频| 中文字幕av第一页| 亚洲综合图片一区| 精品美女久久久久久免费| 精品福利影院| 亚洲av无码成人精品国产| 综合国产在线视频| 成人在线免费观看av| 日本精品一区二区三区四区的功能| 国产按摩一区二区三区| 亚洲精品7777xxxx青睐| 亚洲精品.www| 天天干天天操天天干天天操| 欧美视频免费一区二区三区| 天天色棕合合合合合合合| 91丨九色丨蝌蚪富婆spa| 色噜噜亚洲精品中文字幕| 18video性欧美19sex高清| 亚洲承认视频| 在线国产三级| 久久99精品久久久久久动态图| 欧美大尺度在线观看| 亚洲国产精品美女| 亚洲国产成人私人影院tom| 永久免费看mv网站入口亚洲| 精品国产一区二区在线| 欧美一级黄色录像| 丰满圆润老女人hd| 岛国av一区二区在线在线观看| 国产综合久久久| 黄色片视频免费观看| 成人免费淫片aa视频免费| 国产精品va在线| 日韩av不卡一区| 久久久久久久久久看片| 成人在线免费观看av| av日韩中文| 中文字幕亚洲图片| 91欧美在线| 噼里啪啦在线中文观看| 成人看片毛片免费播放器| 日本美女xxx| 国内精品国产成人国产三级粉色| 精品国产伦一区二区三区观看方式| 成人影视免费观看| jizzjizz中国精品麻豆| 亚洲精品午夜视频| 天堂中文最新版在线中文| 波多野结衣视频在线观看| 中文字幕一区二区三区四区免费看| 欧美日韩国产v| 精品一区二区免费在线观看| 欧美成人手机在线视频| 天堂va欧美ⅴa亚洲va一国产| 丝袜亚洲欧美日韩综合| 色视频在线观看在线播放| 国内精品久久久久久久影视麻豆| 日韩大胆人体| 亚洲人成电影网站色www| 国产一二三在线观看| 天天操综合520| 一本不卡影院| 潘金莲激情呻吟欲求不满视频| 黄色成年人视频在线观看| 中文无码av一区二区三区| 91网站免费观看| 欧美va久久久噜噜噜久久| 国内精品2019| 一区二区三区在线观看免费视频| 影音先锋中文字幕在线| www在线免费观看视频| 欧美高清视频一区| 亚洲中文字幕久久精品无码喷水| 手机在线理论片| 9l视频白拍9色9l视频| 性感美女福利视频| 久久天堂电影网| 欧美人与物videos另类xxxxx| 神马日本精品| 欧美高清中文字幕| 88在线观看91蜜桃国自产| 欧美性大战久久久久久久蜜臀| 精品一区二区三区人妻| 国产精品免费网站| 天堂а√在线中文在线| 午夜啪啪免费视频| 欧美大片免费观看网址| 人妻丰满熟妇av无码区app| 一本—道久久a久久精品蜜桃| 在线国产电影不卡| 成年人视频在线看| 国产亚洲小视频| 欧美承认网站| 视频一区二区中文字幕| 亚洲欧洲一区二区天堂久久| www插插插无码免费视频网站| 亚洲视频在线一区观看| 亚洲国产精品成人久久蜜臀| 精品国产91乱码一区二区三区四区| 成人乱人伦精品视频在线观看| 国产精品一卡二卡| 狠狠久久综合婷婷不卡| 欧美高清成人| 无人码人妻一区二区三区免费| 久久久久国色av免费看影院| 日韩风俗一区 二区| 国产精品乱子伦| 亚洲白虎美女被爆操| 美女久久久久久久久久久| 亚洲精品中文综合第一页| 四虎影视在线观看2413| www.日本视频| 久久精品盗摄| 国产有码一区二区| 日韩国产欧美精品| 亚洲日本va午夜在线电影| 亚洲免费视频一区二区| 天堂视频在线免费观看| 中文字幕乱码av| 成人网站免费观看入口| 精品免费日产一区一区三区免费| 欧美性猛交xxxx富婆弯腰| 豆国产97在线| 亚洲精品中文字幕| 久久视频一区| 久久久亚洲国产精品| 黄色网址电影| www.av88| 欧美精品二区三区四区免费看视频| 欧美综合一区第一页| 国产传媒久久久| 在线观看免费国产成人软件| 欧美成人性战久久| 国产一区二区三区日韩欧美| 亚洲aaa在线观看| 日韩美女免费线视频|