亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Canvas粒子系統(tǒng)實(shí)現(xiàn)動(dòng)態(tài)星空:前端動(dòng)畫原理與性能優(yōu)化實(shí)戰(zhàn)

Canvas粒子系統(tǒng)實(shí)現(xiàn)動(dòng)態(tài)星空:前端動(dòng)畫原理與性能優(yōu)化實(shí)戰(zhàn) 1. 項(xiàng)目概述用代碼繪制一片會(huì)呼吸的星空最近在整理一些前端小項(xiàng)目時(shí)又翻出了這個(gè)經(jīng)典的“動(dòng)態(tài)星空”效果。它不是什么復(fù)雜的3D引擎只用最基礎(chǔ)的HTML、CSS和JavaScript就能在瀏覽器里創(chuàng)造出一片深邃、閃爍、緩緩移動(dòng)的星空。這幾乎是每個(gè)前端開發(fā)者入門Canvas或?qū)W習(xí)動(dòng)畫原理時(shí)都會(huì)嘗試的“浪漫”項(xiàng)目。它看起來(lái)簡(jiǎn)單但背后涉及到的知識(shí)點(diǎn)卻非常扎實(shí)Canvas繪圖、隨機(jī)數(shù)生成、粒子系統(tǒng)、動(dòng)畫循環(huán)、性能優(yōu)化甚至一點(diǎn)點(diǎn)物理模擬。無(wú)論是用來(lái)裝飾個(gè)人博客的背景還是作為學(xué)習(xí)動(dòng)畫原理的絕佳案例這個(gè)項(xiàng)目都極具價(jià)值。今天我就來(lái)詳細(xì)拆解一下如何從零開始實(shí)現(xiàn)一個(gè)既美觀又流暢的動(dòng)態(tài)星空并分享一些我在實(shí)現(xiàn)過(guò)程中積累的、教科書上不會(huì)寫的實(shí)戰(zhàn)技巧和避坑心得。2. 核心思路與架構(gòu)設(shè)計(jì)2.1 粒子系統(tǒng)星空的本質(zhì)動(dòng)態(tài)星空的本質(zhì)就是一個(gè)簡(jiǎn)化版的粒子系統(tǒng)Particle System。我們把屏幕上的每一個(gè)星星看作一個(gè)獨(dú)立的“粒子”。每個(gè)粒子都有自己的一套屬性比如位置 (x, y)在Canvas畫布上的坐標(biāo)。速度 (vx, vy)決定星星移動(dòng)的方向和快慢。半徑 (radius)星星的大小。亮度/透明度 (alpha)用于實(shí)現(xiàn)星星的閃爍效果。顏色 (color)通常是白色或淡黃色但也可以加入一些藍(lán)色或紫色的星云色調(diào)。我們的核心任務(wù)就是初始化幾百上千個(gè)這樣的粒子然后在每一幀動(dòng)畫中更新每個(gè)粒子的屬性主要是位置和亮度并重新繪制它們。當(dāng)所有粒子協(xié)同運(yùn)動(dòng)時(shí)就形成了星空流動(dòng)和閃爍的視覺效果。2.2 技術(shù)選型為什么是Canvas實(shí)現(xiàn)這類動(dòng)態(tài)圖形主要有三種前端技術(shù)純CSS動(dòng)畫、SVG和Canvas。純CSS動(dòng)畫對(duì)于數(shù)量少、規(guī)律性強(qiáng)的動(dòng)畫比如幾個(gè)元素的平移、旋轉(zhuǎn)很高效但難以管理成百上千個(gè)獨(dú)立運(yùn)動(dòng)的元素性能開銷大控制粒度不夠細(xì)。SVG作為矢量圖形縮放不失真適合圖標(biāo)和交互式圖表。但同樣當(dāng)DOM節(jié)點(diǎn)每個(gè)SVG圖形都是一個(gè)DOM元素?cái)?shù)量激增時(shí)性能會(huì)急劇下降。HTML5 Canvas這是我們的最佳選擇。Canvas提供了一個(gè)位圖畫布我們通過(guò)JavaScript API直接在上面進(jìn)行像素級(jí)繪制。它的優(yōu)勢(shì)在于高性能所有繪制操作都由瀏覽器底層圖形API如OpenGL處理對(duì)于大量圖形的重繪效率極高。精細(xì)控制可以精確控制每個(gè)像素的顏色、位置和混合模式實(shí)現(xiàn)閃爍、拖尾、光暈等復(fù)雜效果。無(wú)DOM負(fù)擔(dān)無(wú)論繪制多少星星都不會(huì)增加DOM樹的節(jié)點(diǎn)數(shù)避免了重排和重繪的性能瓶頸。因此基于Canvas的粒子系統(tǒng)是實(shí)現(xiàn)動(dòng)態(tài)星空在性能和靈活性上的最優(yōu)解。2.3 整體架構(gòu)設(shè)計(jì)整個(gè)項(xiàng)目的代碼結(jié)構(gòu)非常清晰主要分為三個(gè)部分HTML結(jié)構(gòu)一個(gè)簡(jiǎn)單的canvas元素作為我們的“宇宙畫布”。CSS樣式讓Canvas畫布充滿整個(gè)瀏覽器視窗并設(shè)置一個(gè)深邃的深空背景色如#0a0a2a。JavaScript邏輯這是核心包含以下模塊初始化模塊獲取Canvas上下文設(shè)置畫布尺寸創(chuàng)建粒子數(shù)組并初始化所有星星粒子。粒子類/構(gòu)造函數(shù)定義星星的屬性和基礎(chǔ)方法如繪制自身、更新狀態(tài)。動(dòng)畫循環(huán)模塊使用requestAnimationFrame驅(qū)動(dòng)動(dòng)畫在每一幀中清空畫布、更新所有粒子、重繪所有粒子。交互模塊可選監(jiān)聽窗口大小變化resize事件以自適應(yīng)或監(jiān)聽鼠標(biāo)移動(dòng)實(shí)現(xiàn)星空隨鼠標(biāo)流動(dòng)的交互效果。這個(gè)架構(gòu)確保了邏輯的分離使得代碼易于閱讀、維護(hù)和擴(kuò)展。3. 核心代碼實(shí)現(xiàn)與逐行解析接下來(lái)我們進(jìn)入實(shí)戰(zhàn)環(huán)節(jié)。我會(huì)提供一個(gè)完整的、注釋詳細(xì)的代碼實(shí)現(xiàn)并解釋每一段關(guān)鍵代碼的意圖和原理。3.1 搭建基礎(chǔ)HTML與CSS結(jié)構(gòu)首先創(chuàng)建我們的畫布和基礎(chǔ)樣式。!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title動(dòng)態(tài)星空 | HTMLJS實(shí)現(xiàn)/title style /* 關(guān)鍵樣式去除默認(rèn)邊距讓畫布充滿全屏 */ * { margin: 0; padding: 0; box-sizing: border-box; } body { overflow: hidden; /* 隱藏滾動(dòng)條營(yíng)造沉浸感 */ background-color: #0a0a2a; /* 深藍(lán)色背景模擬夜空底色 */ height: 100vh; /* 確保body高度為整個(gè)視口 */ display: flex; justify-content: center; align-items: center; } #starCanvas { display: block; /* 消除canvas底部的默認(rèn)間隙 */ /* width和height在JS中動(dòng)態(tài)設(shè)置這里可以留空或設(shè)一個(gè)默認(rèn)值 */ } /style /head body !-- 星空繪制的舞臺(tái) -- canvas idstarCanvas/canvas script srcstarfield.js/script !-- 引入核心JS邏輯 -- /body /html注意這里將CSS的background-color設(shè)置在body上而不是canvas上。因?yàn)镃anvas默認(rèn)是透明的這樣我們既能通過(guò)Canvas繪制星星又能透過(guò)Canvas看到背景色。另一種做法是每幀在Canvas上繪制一個(gè)巨大的矩形作為背景但那樣會(huì)多一次繪制調(diào)用。當(dāng)前做法更高效。3.2 JavaScript核心實(shí)現(xiàn) (starfield.js)這是整個(gè)項(xiàng)目的靈魂所在。我們將代碼分塊講解。3.2.1 初始化與全局變量// 獲取Canvas元素和2D繪圖上下文 const canvas document.getElementById(starCanvas); const ctx canvas.getContext(2d); // 星星粒子數(shù)組 let stars []; // 星星總數(shù)根據(jù)性能調(diào)整。1000-2000在普通電腦上通常很流暢。 const STAR_COUNT 800; // 動(dòng)畫幀ID用于取消動(dòng)畫循環(huán) let animationId null; // 初始化畫布尺寸 function initCanvasSize() { // 將畫布尺寸設(shè)置為窗口的內(nèi)部尺寸實(shí)現(xiàn)全屏 canvas.width window.innerWidth; canvas.height window.innerHeight; } // 立即執(zhí)行一次初始化 initCanvasSize();ctx這是我們?cè)贑anvas上作畫的“畫筆”所有繪制方法如fillRect,arc,fillStyle都通過(guò)它調(diào)用。stars用于存儲(chǔ)所有星星粒子對(duì)象的數(shù)組。initCanvasSize這個(gè)函數(shù)至關(guān)重要。Canvas的width和height屬性不是CSS的width和height決定了其繪圖表面drawing buffer的分辨率。如果只通過(guò)CSS縮放會(huì)導(dǎo)致繪制內(nèi)容模糊。因此我們必須讓繪圖表面的分辨率與Canvas元素顯示的實(shí)際像素尺寸一致。3.2.2 定義星星粒子類使用ES6的類語(yǔ)法來(lái)組織每個(gè)星星的屬性和行為代碼更清晰。class Star { constructor() { // 重置粒子到初始狀態(tài) this.reset(true); } // 重置星星屬性。參數(shù)init用于區(qū)分首次創(chuàng)建和飛出邊界后的重生。 reset(init false) { // 位置隨機(jī)分布在畫布上。如果是初始化y坐標(biāo)也隨機(jī)否則從頂部外重生。 this.x Math.random() * canvas.width; this.y init ? Math.random() * canvas.height : -10; // 速度x方向基本不動(dòng)或微動(dòng)y方向向下模擬星空緩慢下移或漂浮感。 // 乘以一個(gè)隨機(jī)因子讓速度有細(xì)微差別更自然。 this.vx (Math.random() - 0.5) * 0.2; this.vy Math.random() * 0.7 0.3; // 半徑隨機(jī)大小大部分是小星星偶爾有大星星 this.radius Math.random() * 1.2 0.3; // 顏色基礎(chǔ)是白色可以混合一點(diǎn)藍(lán)色或黃色 const colorVariation Math.random(); if (colorVariation 0.95) { this.color rgba(255, 220, 150, ; // 暖黃色 } else if (colorVariation 0.8) { this.color rgba(200, 220, 255, ; // 冷藍(lán)色 } else { this.color rgba(255, 255, 255, ; // 純白色 } // 閃爍相關(guān)屬性 this.alpha Math.random() * 0.5 0.5; // 初始透明度 0.5-1.0 this.flickerSpeed Math.random() * 0.05 0.02; // 閃爍速度 this.flickerDirection Math.random() 0.5 ? 1 : -1; // 閃爍方向增亮或變暗 this.flickerDelta 0; // 用于正弦波計(jì)算的增量 } // 更新星星狀態(tài)位置、透明度 update() { // 更新位置 this.x this.vx; this.y this.vy; // 邊界檢查如果星星移出畫布底部則重置它從頂部重新出現(xiàn) if (this.y canvas.height 10) { this.reset(); } // 可選左右邊界穿墻 if (this.x canvas.width 10) this.x -10; if (this.x -10) this.x canvas.width 10; // 更新閃爍效果使用正弦函數(shù)產(chǎn)生平滑的周期性閃爍 this.flickerDelta this.flickerSpeed; // 正弦值范圍[-1, 1]映射到透明度變化幅度 let flicker Math.sin(this.flickerDelta) * 0.3; // 計(jì)算當(dāng)前透明度并限制在合理范圍[0.2, 1.0] this.currentAlpha Math.max(0.2, Math.min(1.0, this.alpha flicker)); } // 在畫布上繪制星星 draw() { ctx.beginPath(); // 開始一條新的繪制路徑 // 繪制圓形星星。參數(shù)x, y, 半徑, 起始角, 結(jié)束角2π為一整圓 ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2); // 設(shè)置填充樣式使用計(jì)算出的當(dāng)前透明度 ctx.fillStyle this.color this.currentAlpha ); ctx.fill(); // 執(zhí)行填充 // 進(jìn)階為較大的星星添加光暈效果提升視覺質(zhì)感 if (this.radius 0.8) { // 創(chuàng)建一個(gè)徑向漸變作為光暈 const gradient ctx.createRadialGradient( this.x, this.y, 0, // 內(nèi)圓圓心和半徑 this.x, this.y, this.radius * 3 // 外圓圓心和半徑 ); gradient.addColorStop(0, this.color 0.3)); // 中心較實(shí) gradient.addColorStop(1, this.color 0)); // 邊緣完全透明 ctx.fillStyle gradient; // 繪制一個(gè)更大的圓作為光暈 ctx.beginPath(); ctx.arc(this.x, this.y, this.radius * 3, 0, Math.PI * 2); ctx.fill(); } } }關(guān)鍵點(diǎn)解析reset方法這是粒子系統(tǒng)的常見模式。粒子飛出邊界后不是被銷毀而是“重置”屬性后復(fù)用避免了頻繁創(chuàng)建和銷毀對(duì)象的垃圾回收壓力是重要的性能優(yōu)化點(diǎn)。速度設(shè)置vy垂直速度設(shè)置為正數(shù)所以星星整體向下移動(dòng)。通過(guò)給vx一個(gè)很小的隨機(jī)正負(fù)值可以讓星空有輕微的橫向流動(dòng)感更生動(dòng)。閃爍算法沒有使用簡(jiǎn)單的隨機(jī)數(shù)切換而是用Math.sin正弦函數(shù)。正弦波的平滑性使得星星的明暗變化是連續(xù)的、自然的避免了生硬的跳變。flickerDelta的累加實(shí)現(xiàn)了動(dòng)畫的推進(jìn)。光暈效果使用createRadialGradient創(chuàng)建徑向漸變來(lái)模擬星星的光芒。這是提升視覺效果的關(guān)鍵一步讓星星看起來(lái)不是生硬的圓點(diǎn)而是有發(fā)光的感覺。注意光暈的繪制要在星星本體之后并且其透明度漸變要設(shè)置正確。3.2.3 初始化粒子數(shù)組與動(dòng)畫循環(huán)// 初始化創(chuàng)建所有星星粒子 function initStars() { stars []; // 清空數(shù)組 for (let i 0; i STAR_COUNT; i) { stars.push(new Star()); } } // 動(dòng)畫循環(huán)函數(shù) function animate() { // 1. 清空畫布用透明色清除整個(gè)區(qū)域露出body的深色背景 // 注意如果每幀繪制背景矩形則用 fillRect ctx.clearRect(0, 0, canvas.width, canvas.height); // 2. 更新并繪制每一個(gè)星星 for (let star of stars) { star.update(); // 計(jì)算新位置和透明度 star.draw(); // 繪制到畫布上 } // 3. 請(qǐng)求下一幀動(dòng)畫形成循環(huán) animationId requestAnimationFrame(animate); } // 啟動(dòng)動(dòng)畫 function startAnimation() { if (!animationId) { // 防止重復(fù)啟動(dòng) initStars(); animate(); } } // 停止動(dòng)畫用于頁(yè)面隱藏時(shí)節(jié)省資源 function stopAnimation() { if (animationId) { cancelAnimationFrame(animationId); animationId null; } }requestAnimationFrame(animate)這是實(shí)現(xiàn)瀏覽器動(dòng)畫的標(biāo)準(zhǔn)方法。它告訴瀏覽器“在下次重繪之前執(zhí)行animate函數(shù)”。相比舊的setInterval它能與瀏覽器的刷新率同步通常是60fps確保動(dòng)畫平滑并且在頁(yè)面不可見時(shí)自動(dòng)暫停節(jié)省CPU和GPU資源。ctx.clearRect(0, 0, canvas.width, canvas.height)這是清除畫布的標(biāo)準(zhǔn)做法。它把指定矩形區(qū)域內(nèi)的像素設(shè)置為透明。因?yàn)槲覀冇猩钌尘八钥雌饋?lái)就是“擦除”了上一幀的畫面。3.2.4 處理窗口大小變化與頁(yè)面可見性一個(gè)健壯的項(xiàng)目必須考慮響應(yīng)式和資源管理。// 監(jiān)聽窗口大小變化自適應(yīng)畫布尺寸 window.addEventListener(resize, () { // 防抖處理避免resize事件觸發(fā)過(guò)于頻繁 if (this.resizeTimeout) clearTimeout(this.resizeTimeout); this.resizeTimeout setTimeout(() { initCanvasSize(); // 重置畫布分辨率 // 注意星星位置是基于舊畫布坐標(biāo)的重置后坐標(biāo)會(huì)錯(cuò)亂。 // 方案一簡(jiǎn)單重新初始化所有星星星空會(huì)“重置”。 initStars(); // 方案二復(fù)雜根據(jù)新舊畫布比例重新計(jì)算每個(gè)星星的位置。這里采用方案一。 }, 200); }); // 利用 Page Visibility API 優(yōu)化性能 document.addEventListener(visibilitychange, () { if (document.hidden) { // 頁(yè)面不可見如切換標(biāo)簽頁(yè)、最小化停止動(dòng)畫 stopAnimation(); } else { // 頁(yè)面再次可見重啟動(dòng)畫 startAnimation(); } }); // 頁(yè)面加載完成后啟動(dòng) window.addEventListener(load, startAnimation);實(shí)操心得resize事件處理中的“星星位置錯(cuò)亂”問題是一個(gè)經(jīng)典坑點(diǎn)。簡(jiǎn)單地重新初始化initStars()是最快最安全的方案用戶體驗(yàn)是星空會(huì)突然“刷新”一次。如果你希望星星位置能平滑過(guò)渡就需要記錄比例并重新計(jì)算每個(gè)星星的x和y坐標(biāo)邏輯會(huì)復(fù)雜很多。對(duì)于星空背景這種非精確交互的場(chǎng)景我通常選擇簡(jiǎn)單重置影響不大。4. 性能優(yōu)化與高級(jí)效果拓展基礎(chǔ)版本已經(jīng)能運(yùn)行得很好。但如果你想打造一個(gè)更驚艷、更專業(yè)的星空或者面對(duì)粒子數(shù)更多2000的場(chǎng)景就需要考慮以下優(yōu)化和拓展。4.1 性能優(yōu)化技巧離屏CanvasOffscreen Canvas場(chǎng)景如果星星形狀固定且復(fù)雜比如不是簡(jiǎn)單的圓而是星形圖片每幀重繪上千次drawImage開銷很大。做法將每個(gè)星星預(yù)先繪制到一個(gè)離屏的小Canvas上。在主動(dòng)畫循環(huán)中不再調(diào)用arc和fill而是直接使用drawImage將離屏的星星“圖章”復(fù)制到主畫布上。這能大幅減少繪制指令。代碼示意const offscreenCanvas document.createElement(canvas); const offscreenCtx offscreenCanvas.getContext(2d); // 在offscreenCanvas上繪制好一個(gè)星星 offscreenCtx.arc(5,5,2,0,Math.PI*2); offscreenCtx.fill(); // 在animate循環(huán)中 ctx.drawImage(offscreenCanvas, star.x, star.y);對(duì)象池Object Pool我們的reset方法已經(jīng)體現(xiàn)了對(duì)象池的思想復(fù)用對(duì)象避免垃圾回收。確保stars數(shù)組大小固定而不是不斷push和splice。減少繪制狀態(tài)變更Canvas的fillStyle、strokeStyle、globalAlpha等狀態(tài)設(shè)置是有開銷的。如果所有星星顏色和透明度差異不大可以嘗試按屬性分批繪制減少狀態(tài)切換。但在我們這個(gè)閃爍、顏色微變的場(chǎng)景下收益可能不明顯且代碼會(huì)變復(fù)雜。使用Web Workers將粒子位置、速度等數(shù)據(jù)的計(jì)算即update邏輯放到Web Worker線程中與UI渲染線程分離。這對(duì)于粒子數(shù)量極多數(shù)萬(wàn)的復(fù)雜物理模擬有奇效。但對(duì)于千量級(jí)的星空可能引入的通信開銷得不償失。4.2 視覺增強(qiáng)效果添加流星創(chuàng)建一種特殊的“Meteor”粒子類擁有更快的速度、更長(zhǎng)的尾巴。尾巴可以用繪制一條漸隱的線段或者連續(xù)繪制幾個(gè)透明度遞減的圓點(diǎn)來(lái)實(shí)現(xiàn)。每隔幾秒隨機(jī)生成一顆流星賦予其隨機(jī)的起始位置和方向。星空分層與視差滾動(dòng)創(chuàng)建2-3個(gè)stars數(shù)組分別代表“遠(yuǎn)景慢星”、“中景中速星”、“近景快星”。賦予它們不同的速度(vy)和大小(radius)。在更新時(shí)近景星移動(dòng)快遠(yuǎn)景星移動(dòng)慢從而產(chǎn)生強(qiáng)烈的3D縱深感和沉浸感。這是讓星空“活過(guò)來(lái)”最有效的一招。交互式星空監(jiān)聽mousemove事件根據(jù)鼠標(biāo)位置計(jì)算一個(gè)“力場(chǎng)”影響附近星星的速度(vx, vy)讓星星像被鼠標(biāo)吸引或推開一樣流動(dòng)。這需要為Star類增加一個(gè)applyForce(vx, vy)方法。背景星云在Canvas最底層用createRadialGradient或createLinearGradient繪制幾片半透明的、顏色柔和的色塊如深藍(lán)、紫色、暗紅作為星云的背景。注意要設(shè)置globalAlpha為很低的值如0.1并且只在初始化或窗口重置時(shí)繪制一次不要放在動(dòng)畫循環(huán)里否則性能堪憂。5. 常見問題與調(diào)試實(shí)錄在實(shí)現(xiàn)過(guò)程中你幾乎一定會(huì)遇到下面這些問題。這里是我的排查記錄和解決方案。5.1 問題星星閃爍生硬像在“跳動(dòng)”而不是“呼吸”。排查檢查閃爍算法。如果用的是Math.random()直接設(shè)置alpha變化就會(huì)不連續(xù)。解決如前所述改用基于Math.sin()或Math.cos()的周期性函數(shù)??梢哉{(diào)整flickerSpeed改變閃爍頻率調(diào)整正弦波的振幅改變明暗變化幅度。5.2 問題動(dòng)畫卡頓幀率FPS很低。排查步驟打開瀏覽器開發(fā)者工具F12的“性能Performance”面板錄制幾秒動(dòng)畫查看主要耗時(shí)在“腳本Scripting”還是“渲染Rendering”。減少粒子數(shù)量將STAR_COUNT從1500降到800看是否立即流暢。這是最直接的驗(yàn)證。檢查循環(huán)內(nèi)的操作是否在animate函數(shù)或Star.draw中執(zhí)行了昂貴的操作比如console.log、復(fù)雜的數(shù)學(xué)計(jì)算、DOM操作等。解決方案確保console.log不在動(dòng)畫循環(huán)中。使用上節(jié)提到的離屏Canvas優(yōu)化繪制??紤]使用requestAnimationFrame的回調(diào)參數(shù)timestamp來(lái)實(shí)現(xiàn)時(shí)間差deltaTime動(dòng)畫讓動(dòng)畫速度與幀率解耦避免在高刷新率屏幕如144Hz上運(yùn)行過(guò)快。let lastTime 0; function animate(timestamp) { const deltaTime timestamp - lastTime; lastTime timestamp; // 更新星星時(shí)使用 deltaTime * 0.001 來(lái)調(diào)節(jié)速度使其與時(shí)間相關(guān)而非幀數(shù)相關(guān) // this.x this.vx * (deltaTime * 0.001); }5.3 問題畫布在高分辨率屏幕如Retina屏上模糊。原因Canvas的CSS寬高和其width/height屬性不一致。在Retina屏上1個(gè)CSS像素可能對(duì)應(yīng)2個(gè)物理像素。如果我們只設(shè)置CSS為全屏而canvas.width等于window.innerWidth那么繪圖表面分辨率不足就會(huì)被拉伸導(dǎo)致模糊。解決獲取設(shè)備的設(shè)備像素比devicePixelRatio并依此放大Canvas的繪圖表面。function initCanvasSize() { const dpr window.devicePixelRatio || 1; const rect canvas.getBoundingClientRect(); // 設(shè)置Canvas元素的實(shí)際顯示尺寸CSS像素 canvas.style.width ${rect.width}px; canvas.style.height ${rect.height}px; // 設(shè)置繪圖表面的分辨率物理像素 canvas.width rect.width * dpr; canvas.height rect.height * dpr; // 縮放繪圖上下文讓后續(xù)所有繪制坐標(biāo)自動(dòng)適配高分辨率 ctx.scale(dpr, dpr); }經(jīng)過(guò)這樣處理繪制出的星星邊緣會(huì)非常銳利清晰。5.4 問題窗口改變大小時(shí)星星位置錯(cuò)亂或聚集。原因如3.2.4節(jié)所述星星的坐標(biāo)(x, y)是基于舊畫布尺寸的。畫布突然變大所有星星仍集中在左上角原始區(qū)域畫布變小部分星星會(huì)跑到畫布外。解決如前所述在resize事件中重新初始化initStars()是最簡(jiǎn)單的方法。如果要求高就需要做坐標(biāo)映射。5.5 問題想用圖片代替圓形作為星星。解決在Star類中加載圖片并在draw方法中使用ctx.drawImage。class Star { constructor() { this.img new Image(); this.img.src star.png; // 小星星圖片 this.reset(true); } draw() { if (this.img.complete) { // 繪制圖片注意坐標(biāo)要減去寬高的一半以居中 ctx.drawImage(this.img, this.x - this.radius, this.y - this.radius, this.radius*2, this.radius*2); } else { // 圖片未加載完用圓形兜底 ctx.arc(this.x, this.y, this.radius, 0, Math.PI*2); ctx.fill(); } } }注意加載數(shù)百?gòu)埾嗤膱D片是巨大的浪費(fèi)。應(yīng)該只創(chuàng)建一個(gè)Image對(duì)象然后在所有星星的draw方法中共享引用。同時(shí)務(wù)必做好加載狀態(tài)判斷否則會(huì)繪制空白。這個(gè)項(xiàng)目從簡(jiǎn)單的圓點(diǎn)開始通過(guò)逐步添加速度、閃爍、光暈、分層、交互最終可以演變出一個(gè)極具視覺沖擊力和趣味性的動(dòng)態(tài)星空。它不僅是前端動(dòng)畫的入門石更是理解計(jì)算機(jī)圖形學(xué)中粒子系統(tǒng)、動(dòng)畫循環(huán)、性能優(yōu)化等核心概念的絕佳實(shí)踐。希望這份詳細(xì)的拆解和實(shí)錄能幫助你不僅實(shí)現(xiàn)效果更能理解背后的每一行代碼為何如此書寫。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美亚洲首页| 91女优在线观看| 亚洲91大片| 天天日天天干少妇日| 强奸乱伦亚洲第一页| 在线啊v一区| 久久久蜜桃一区二区三区| 精品人妻夜夜草| 日本一二区不卡| 一级做受视频免费是看美女| 亚洲九九夜夜| 四季AV一区二区凹凸精品小说| 日韩操啪| 欧美色图片91| 亚洲激情在线观看一区| 国产精品国产自产拍高清AV| 超碰日韩人妻| 成人一级二级| 五月婷色| 婷婷性网| 国产精品探花视频| 91操熟女视频 | 少妇人妻好深太紧了vr91| 五月婷婷五月天| 超碰久草| 欧美网站免费| 四虎884| 成人小说另类在线| 中国黑人三级片网站上区| 91麻豆天美国产欧美高潮| 国产乱伦一二三区| 久九色| 99热97| 新亚洲无码| 极品白嫩福利在线| 色欲三区| 久久久精品一区二区| 日本色色视频网站| 午夜精品久久久久久久| 成人网址在线观看| 操逼无码操逼| 狠狠色五月亚洲91| 亚洲 综合 欧美| 精品一区二区三区丰满熟女-亚洲欧美一区| 久久露脸国产老熟女| 精品大全99999| 天天综合日韩网| 啊啊嗯嗯好爽| 少妇精品久久久| 人人摸人人干人人拍97| 欧美激情视频一区二区| 99少妇精品视频| 秋霞网无码| 香港日本韩国人妇99www.wccm20| 九色 人妻 大香蕉| 色九月| 岛国黄片网站| 天天综合91入口| 亚洲天天艹| 成人蜜乳小视频网站| 亚洲诱惑| av在线人气| 欧美性爱中文字幕无线码| 中文熟女五十乱码在线| 日本 欧美 亚中文字幕| 国产AV激情无码久久无码| 男人的天堂三级| 青青国产精品在线| 日韩人妻中文视频| 好爽视频在线观看视频| 欧美一品道| 青青草在线成人视频| 精品久久久久久中文| 97爱爱官网| yazhousetuoumei| 中文字幕av亚洲在线| 欧亚日韩中文在线| 91爱看| 柠檬AV导航| 伊人操你| 欧美狠狠干| 国产中午字一暮区| 日韩钢筋无码高清啾啾啾| 久9热| 蜜乳视频网站| 亚洲天堂精品日韩电影| 国产精品久久aV| 北条麻妃99精品青青久久| 一区二区影视| 久久国产精品熟女人妻| 青青草操逼逼视频| 少妇xx精品| 亚洲av青草久久一区二区| 东京热AV男人的天堂| 日韩在线人妻网站| 色女网日韩| 无码操逼视频一下| av东京热男人的天堂| 亚洲码和欧洲精品激情系列| 日本久操视频| 精品精品精品| 殴美牲| 欧美日韩国产高清在线一二三区| 久久av无码| 中文 人妻 制服| 中文字幕乱偷人妻久久艾草网| 伊人影院在线理论播放 | 国产强奸超碰AV| 人人看欧美性爱| 亚洲欧美色图小说| 精品人妻视频入口| 黄视频免费| 小说区 图片区色 综合区| 中文字幕一区二区三区人妻不卡 | 国产精品久久久鸭无码的功能| 性饥渴少妇av无码毛片| 97超碰磁| 久久亚洲国产成人| 国产性爱在线视频一区二区| 97人人操人人摸人人爱| 免费超碰97在线观看| 婷婷超| 九九九九九精品视频| 午夜精品久久久99热蜜桃的功能特点| 亚洲天天更新| 五月丁香黄色网| 狠狠久久手机视频精品| 欧美美女视频| 欧美A片中文字幕| 免费的黄片有限公司| 一级AV性爱| 国产亚洲日韩欧| 丰满人妻无码一区二区三区| 色婷婷九月天天综合| 黑人精品成人一区二区三区 | 插入粉嫩少妇视频| 啊啊啊骚| 综合久久少妇中文字幕| 思思热久久成人| 欧美日韩中文字幕人妻| 欧美日韩另类在线播放| xxx0国产在线播放| 亚洲午夜AV| www超碰| 久久国产三区| 亚洲清纯唯美| 精品一区二区三区18| 深夜激情| 超碰九区| 国产精品婬乱一级毛片彝族| 920日本午夜免费| 91亚州欧美| 天天干1区2区在线| 欧美亚洲中文| 国产精品无码AV网站| 国产福利精品最新在线 | 一个人免费视频观看在线WWW| 大黄片做爱的大的| 黄污污污污| 日韩ab网 | www.97在线| 欧日韩在线观看| 青青草中出视频| 91国模| 精品人妻中文字幕4399| 色色婷| 青青操在线亚洲视频观看欧美在线 | 亚洲午夜福利视频| 日韩 人妻 精品| 亚洲综合情色| 精品97久久| 97国产高清视频在线观看| 久久久久成人蜜桃精品| 亚洲国产精品久久久男人的天堂| 91色欧美| 黄片aaaaa一区| 天堂九九九九九九九九九| 夜夜综合| aa片毛片| 97人妻碰碰中文无码久热丝袜| 天天综合网在线| 情色大香蕉| 久久久精品91八戒| AV天天在线观看| 91精品人妻啪啪间| 夜夜影视四色| 五月天婷婷社区| 大香蕉黄色一级片免费看| 玖玖视频在线资源一区二区三区| 97伊人超碰| 日韩性爱1级片视频| 91久热| 亚洲资源网| 国产欧美日本亚洲精品| 91人人看| 亚州综合色| 精品-91人妻子系列| 自拍亚洲综合| 亚洲国产成人精品久久久国产成人一区二区三. | 亚洲天堂美臀在线| 精品国产91av一区二区三区 | 亚洲国产欧美中文永久| 久久熟女久| 1000部熟女视频在线观看| 91 亚洲 欧洲| 精品视频在线观看| 久久,精品一二三| 欧美成人贴图| 亚洲男人的天堂亚洲| 超碰一区二区| www成人啪啪18秘 免费| 亚洲人精品午夜不卡| 人人妻人人爽 97人人看碰人免费公开视频| 内射中出日韩在线观看视频| 翔田千里A片一区二区| 97人人草| 欧美精品宗合| 很黄很污的免费网站| 九九九成人| 性爱av在线免费观看| 久久久111| 国产一区二区在线播放| 国产成人自拍视频在线| 青草精品视频日本久久久久网站在线| 日日日日日| 9I1性色影院| 亚洲成人在线播放| 日韩熟女精一区二区三区不卡| 日韩在线观看中文字幕视频| 另类欧美色| 蜜臀av一区二区三区免费观看| 久久99九九九九6666免费观看软件| 五月丁香在线| 欧美一区二区三区互相| 日韩色图 一区二区| 国内三级自拍小视频在线观看| 青青五月天| 日本有码久久| 成人免费看吃奶视频网站| 亚洲 欧美 小说| av天堂精品久久| 亚洲女优有码无码高清| 色噜噜国产在线| 狼狼色丁香久久婷婷综合五月| 久久精品成人一区二区三区蜜臀| 99热91| 看全色黄大色大片免费视频| 尤物视频新赏网鲜网色诱网| 操操操操操操| 丰满少妇人妻久久久久久| 人妻丰满熟妇一区二区三| 91少妇香蕉久久精品| 丁香婷婷啪啪| 亚洲精品一二区| www.久久超碰| 亚洲精品色| 91人精品妻入口| 日本三级小说中文字幕| 极品综合| 国产成人五月天丁香花| 亚洲揄拍网| 九九热精品视频在线观看| 欧美一区二区三区不卡高清视频| 久欲AV| 9 7超碰在线免费观看| 人人色人人操在线| 26uuu最新| 好爽免费视频| 后入国产| 国产午夜福利合集| 亚码人妻| 色爱欲亚洲| 9 9精品一区二区三区| 国产精品干干干| 久久黄片国产一区二区| 777超碰| AV色五月天| 人妻精品综合中文字幕在线| 美女啊啊啊啊pc| 熟妇操花| 亚洲1区2区三区高清中文字幕| 性综合网| 九九热AV| 亚洲欧美黄| 大香蕉综合在线| av片在线观看免费播放| 能在线播放的国产三级| 都市久久精品激情亚洲| 亚洲天堂男人天堂网| 色香91| 亚洲精品天天影视综合网 | 欧美传媒| 91综合色噜噜| 欧美亚洲情色| 91制服丝袜中文字幕| 日韩欧美蜜桃精品久久中文字幕久久| 亚州色图欧美| 精品久久視頻在线| 亚洲国产成人精品无码专区| 成人性爱AV在线免费观看| 人伦四五区| 女人的天堂大香蕉网| 国产有码一区| 亚洲天堂第一页| 嗯嗯,啊啊,国产精品| 色蜜AV| 婷婷在线视频| 夜夜爽77777| 91精品丝袜久久久久久| 99色天堂| 亚洲综合激情五月久久| 日本三级中国三级99人妇网站| 97自拍视频在线| 婷婷五月激情综合| www.夜夜| 久久精品免费| 久久蜜桃综合网| 91艹逼精品| 伊人网在线观看| 秋霞午夜视频一区二区| 国产青青美女玩逼视频| 蜜桃传媒一区二区亚洲| 久久草大香蕉| 九九热男人天堂| 国模限制级电影| 中文字幕视频在线观看一区二区| 美女97超碰| 久久超碰98| 色网综合网| 91大香蕉伊人| 一区二区三区国产在线播放 | 伊色综合天堂色97| 理论久久婷婷网 8| 久久久久亚洲精品| 久久后入制服| 精品国产乱码久久| 精品国产一区二区三区四区在线看| 中文人妻av高清一区| 综合操逼| 久久乐| 91欧美美女日韩国产婷婷| 人妻内射一区二区在线视频| 丝袜 中出 制服 人妻 美腿 中文字幕| 一本色道久久综合精品婷婷| 久久草草亚洲蜜桃臀| 婷婷激情五月天小说网| 精品少妇后入一区二区三区四区人妻巨乳 | 操熟女91| 天堂中文资源在线bt| 国模精品娜娜一二三区| 极品内射| 99热精品在线观看| 色综合V| 亚洲偷拍自拍在线视频| 日本青青草在线| 内射中国少妇高清视频免费视频| 亚洲第一男人天堂| 玖玖爱视频网站| 国产av激情无码久久天堂| 国产美女mm131爽爽爽爽| 丁香激情网| 热热热热日日漂亮永久永久国产日| 9久9久| 久久午夜鲁丝片| 九月丁香| 日日AAvv| 精品人体无圣光凹凸| 亚洲老熟妇xxx| 樱花草社区www中国| 国产美女91| 黑人操一区二区| 中文字幕在在线观看网站| 蜜桃狠狠色伊人亚洲综合| 探花精品 一区二区| 九九综合久久| 久久大陆| 亚州熟女乱伦| 久热色情精品| 国产第11页| 欧美午夜视频| 中文字幕亚洲永久精品| 激情文学 国产一二三aV| 超碰97日韩| 黄页视频网站野外| 亚洲精品 欧美精品| 国产一级内射高清视频| 六月婷婷激情| 欧美色吧综合| 网页导航五月天免费一二三区| 国产白嫩精品久久| 翔田千里AV无码秘 三区| 国内毛片无码一级毛片| AV一二区| 搡老女人老熟女91老熟女综合网| 欧亚性爱视频免费看| 一直超碰| 国产曰批免费观看久久久| 欧美亚洲国产自久久| 在线视频97| 国内91熟女人妻丝袜天天精品视频在线 | 欧美激情一区| 久久久久久亚洲精品不卡人乳| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 欧美后入视频| 男人的天堂午夜av| 久久久久ab| 岛国片在线播放| 午夜精品久久久久| 欧美国产精品| 日本丝袜美腿人妻九九| 成年人网站在线免费观看| 极品粉嫩一区二区| 国产Av超碰| 亚洲 另类 丝袜 自拍 动漫| 久久一区二区高清免费| 玖玖爱伊人玖玖爱| 亚洲AV成人无码一区二区三区在线观看 | 麻豆国产96在线| 欧美,日韩,中文,另类| 日本肉体xxxx裸交| 日韩九九九| ′ !γ}丶。。久久精品欧美一区二区三区 | 99∨VTV| 午夜毛片亚洲精品片国产久久久| 人人操天天爽| 日韩精品中文字幕二区| 99999国产| 欧美熟爽综合| 亚洲精品xxx| 久久精品六区| 熟女丰满人妻一区| 日韩激情毛片一级久久久| 牛牛久久国产精品视频一二三| 亚洲美女自拍偷拍视频| 男人成人黄色视频在线观看免费下载| 影音先锋中文字幕日本好一区二区| 超碰色美女| 青青草视频久久| 蜜乳视频网站| 亚洲日韩狠狠撸视频| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 无码99| 亚洲h片在线免费观看| 久久视频,这里只有精品| 亚洲中文字幕三级在线| 1769成人国产精品视频| 精人妻无码一区二区三区伊人直播| 99久久99九九99九九九| 色婷婷六月丁香七月婷婷| 亚洲精品久久一区二区三区蜜桃臀| 综合色播| 日韩A优精品在线观看| 97久久超碰日韩精品| 一区二区三区四区五区高清无码永久视频 | 亚洲 欧美 色图| 亚洲激情色片| 亚洲AV无码天美传媒一区| 日本东京热加勒比久久| 成人久久久| 曰韩香蕉97| 超碰日本97美女人妻人人玩人人爱| 再深点灬舒服灬太大了添视频| 亚洲AV色图| 青青草成人视频在线观看二区| 天天摸,夜夜摸| 亚洲色色探花| 国产精品露脸在线观看| 久久东京热久久| 97精品97久久| 大香蕉综合在线| 熟女在线视频| 96精品在线| 日韩精品永久在线观看| 国产日韩精品人妻久久久久色欲网站 | 97WW精品| www.99在线| 国产精品久久99日日| 国产亚洲色婷婷久久99精品91 - 百度| 久久久久极品| 夜夜操中文字幕| 九九久久99| 日本三级久| 立川理惠加勒比无码| 99久久婷婷丁香| 国产婷婷综合在线观看| 日本在线观看网址| 亚洲AV麻豆Aⅴ无码电影一| 清纯唯美亚洲综合| 97综合激情| 成人AV在线网站| 久操操| 亚洲日韩肥臀视频在线观看| 久久老子无码午夜伦不卡| 日本精品一级二级三级| 成人三级片无码| 四虎精品一区| 亚洲一区二区三区春色| 最新加勒比丝袜在线| 91精品国产91久久福利| 免费精品无码一级毛片牛牛影视| 在线综合色| 国产综合久久久鬼色| 久久黄人人爽视频| 亚洲色图亚洲无码强奸乱伦| 亚洲棕合电彰| 激情欧美97| 97色色网| 91亚洲综合在线| 天天操综合网| 97网色| 日本 成 人 小说 电影 一区二区| 国产免费一区| 凹凸精品熟女在线观看| 性色avv| 亚洲男人天堂av| 花野真衣| 成人97人人超碰人人| 97在线欧洲| 中文字幕精品日韩中文字幕| 日韩精品国产精品五码一区二区| 午夜男人的天堂| 色噜噜综合在线| 一区AV| 嗯嗯嗯啊啊啊操的我好爽 | 60秒免费视频| 欧美性爱精品一区二区| 不卡视频一区蜜桃视频| 欧美中文字幕男人天堂久久精品 | 九九玖玖精品| 91午夜无码| 天天欲望网| 骚乳在线| 日韩一级欧美一级在线观看| 九t超碰| 青青草日本中文字幕| 一级A片女人高潮叫床| 精精夜夜| 天天操天天舔| 欧美色图 人妻| 午夜欧美精品久久久| 极品欧美一区二区三区| 996热| 久久黄黄| 性爱欧美五月| 性色国产东北露脸精品视频| 国产AV天美| 久久男女激情视频网站| 国产福利影视| 久久男女激情视频网站| 国产91福利小视频在线观看| 国语国产操逼伊人AV网| 亚洲熟妇一,二,三期| 东京热男人的天堂网| 六月丁香五月婷婷| 97精品免费视频网站| 91天射| 亚洲av影音先锋| 欧美日韩黄片精品在线| 欧美在线天堂| 大香蕉一人| 91无摭挡| 中文字幕精品丝袜| 猛交交| 中文字幕日韩综合| 欧美精品日韩一区二区| 亚洲成A∨人影院在线欢看| 97国产|免费| 天天影视综合色| 97操B| 自拍亚洲综合| 久久久久9999精品九九九| 91在线免费观看处女| 一区二区偷拍拍视频| 成人午夜无码视频| 丁香五月综合| 国产人妻精品久久久一区二区三区 | 强奸乱亚洲| 99碰碰| 婷婷激情丁香| 久久久久久九九九九| 大香蕉性欧美| 97超碰中文| 午夜啊啊啊| 国产乱婷婷精品二区三区| 美日韩成人| 精品久久在线区一区| 日本一区99| 中文字幕精品专区搜索结果91| 精品人妻一区二区蜜桃视频| 久久这里只精品| 久久一区二区三区四区五区| 国产精品成人午夜福利| 中文字幕精品探花视频| 久久性爱视频免费看| 91精品少妇搡搡搡| 国产黄色在线播放观看| 97久久久网站| 日本免费一区二区不卡 | 91天堂| 97色色网| 嗯嗯不要视频| 婷婷精品视频| 日日97| 美女黄频a美女大全免费皮| 夜夜爽33333| 亚洲一二三四区机械| 上特色A在线| 免费国产视频| 国产中文大片资源中文字幕| AV天天在线观看| 成人免费性爱视视| 久久免费精品96| 久操频道免费在线呗看| 一区二区三区在线美女| 98色网| 九七人妻在线| 狼狼色丁香久久婷婷综合五月 | 国产 三级自拍| 99xav| 曰韩中文人妻视频| 男人天堂2019亚洲| 日韩天天综合| 影音先锋国产精品| 97操97干| 黄色大香焦1级‘′‘| 日韩av色图| h无码动漫在线观看| 好看的91视频| 久久天天艹| 韩国国产欧美情侣视频在线| 成人小说另类在线| 欧美天天谢综合网| 在线观看高清AV| 成人网欧美风情| 国产二区视频在线观看电影| 亚洲永久AV无码精品秋霞| 久久 国产 无码| 大香蕉男人的天堂| 欧美成人黄网色网站| 欧美日韩天堂| 把腿张开老子CAO烂你| 蜜桃视频啊啊啊啊| 看日韩美女二区三区免费操逼视频| 丝袜美腿丝袜| 91国产精品熟女| 国产美女在线精品免费看| 亚洲永久永久永久永久一级一级一级精品 | 亚洲中文字幕一区二区| 伊人综合色网| 免费看黄视频亚洲网站| 夜色97| 95精品在线| 91在线综合网| 色99视频| 怡红院成人av| 伊色久人大在线| 秋霞Av理论一级在线| 2018天天干在线视频| 97人人干人人操| 激情九月婷婷| 婷婷六月天| 人妻 丝袜美腿 中文字幕| 久久丝袜| 欧亚三区动漫| 欧美偷| 97超碰逼| 91天美传媒在线观看| 久久男人的天堂国产| 男女啊啊啊啊啊| 午夜欧美J进J出白浆流出久久久| 亚洲国产综合久久久性感熟妇| 中文字幕人妻丝袜乱一区三区| 2023天天操夜夜操| 欧美久久草熟女| 色婷婷久久| 中出789在线视频| 国产精品免费美女视频| 久久久999| 人人妻人人玩人人澡人人爽| 欧美丝袜美女电影一二三四区| 国产青视频| 日韩二三区| 亚洲 欧美 小说| 厕所偷拍在线| 色五月69夫妻| 色婷婷六月| 黄页视频网站野外| 强奸乱伦av电影| 黄片www.| 色五月婷婷久久| 色婷五月| 99丝袜福利在线播放| 91色综| 久久综合乱子伦国产免费| 久久久9品一区二区三区| 欧美黑人猛交春色影视大全| 90后性网国产欧美| 性爱动态120秒| 冬京热男人的天堂| 嫩草影院永久在线制服丝袜| 丝袜视频网国产90| 亚洲午夜蜜臀| 最近二区三区视频大全 | 亚欧美色图| 国产精品国产精品国产| 亚洲熟女乱色一区二区三区| 色在线亚洲视频www| 9l视频自拍9l九色成人| 2011国产精品| 东北操逼| 999精品女人| 国产精品久久久久无码A√| 欧美性爱视频免费一区一A | 丰满人妻-区二区三区免费| 国产夜夜操| 91大香蕉伊人| 乱性AV| 国产精品色色| 激情四射五月天| 蜜臀在线视频| 欧美顶级黄片AAAAA在线免费看| 欧美综合自拍成人自拍第二十页| 国产美女91视频| 97人妻免费中文字幕| 亚洲天天艹| 92人人操人人| 色婷婷久久综合超碰| 五月丁香色综合| 欧美日韩性爱无码| 国内毛片无遮挡国产| 亚洲AV色图一区| 亚洲精品官网在线观看| 99热在线不卡| 久久久999国产精品| 亚洲高清无码在线桃色| 人妻内射一区二区在线视频| 国产免费操逼| 日韩精品大香蕉伊人在线| 色欲三区| 日韩成人色图| AV和黑人在线播放| 欧美天堂超碰97| 免费久久精品麻豆一区二区av| 日本久久999| 综合激情一一91| 亚洲在线a| 国语人妻精彩刺激| 26uuu久久| 四月丁香婷婷| 久久久久久久伊人精品| 亚洲视频一二区| 美女极品一区二区三区| 中字一区| 国产18精品亚洲精品| 人妻91少妇| 大香蕉五月天婷婷| 蜜臀久久久99久久久久 | 亚洲国产福利视频| 国产亚洲综合欧美一区| 日夜精品| 做爱福利视频一区二区| 先锋色眉乱伦资源| 欧美 色 亚洲| 国产suv精品一区二区四区999| 黄色香蕉视频网站一区| 欧美色图片欧美色图| 五月丁香久久| 成人免费看吃奶视频网站| 日本天天干天天日一区| 一区二区你上我| 操逼国产免费| 成·人免费午夜在线观看| 天天综合网国产| 国产欧美日韩精品中文| 加勒比无码毛片| 日本大香蕉| 99热精品在线在线| 91精品人妻偷情| 色九九久九九| 九九综合网| 青青草原人妻| 91人妻爽爽人人做人人澡| 国产精品剧情| 精人妻一区二区三区| 久久久久久久久久久久九| 麻豆久久视频在线地址| 99人人干| 亚洲电影中字一区二区| 99人妻| 97人人夜| 97鸡把在线视频| 破处bbq| 941超碰| 91国产丝袜美女| 四虎免费视频| 日韩无码操逼片| 99色热| 亚洲情色综合网| 久热热| 午夜一区| 色噜噜狠狠色综无码久久| 亚洲综合嫩| 亚洲欧美日韩精品久| 99re6久热只有精品6在线直播| 综合网亚| 东京热精品97综合网| 日本久久久精品电影| 超碰美国| 色噜噜日韩精品| a片 xxxx受爽视频| 97精品一区二区视频| 国产又黄又爽| 国产日韩色综合| 精品人妻一区二区三区视频在线| 麻豆成人影音在线| 一卡二卡在线播放| 91女优在线观看 | 高树玛利亚无码流出| 精品人妻av区天天看片| 欧美专区17页| 亚洲AV色图一区| 婷婷探花久久精品一区| 色香网| 午夜九九| 中文字幕一区二区三区50路| 思思热一热婷婷热一热| 精品少妇后入一区二区三区四区人妻巨乳| 久久XX| 综合激情五月丁香| 欧美性爱一级操| 91狠狠色丁香婷婷综合久久精品| 日韩精品一二三四| 亚洲中文字幕乱码无码一区二区| 爱啪精品一区| 欧美色图人妻| 97干在线视频| 黄色操人| 99久久婷婷国产综合精品草原| 欧美日韩岛国大片在线观看| 欧亚洲精品有视频| 亚洲青色欧美| 男女啪啪网站免费视频| 亚洲av无线观看| 精品久久久久瑟瑟| 国内一区二区三区| 美女操逼A A| 99ri在线视频| 成人一区二区三区四区| 在线播放欧洲免费av| 五月婷亚洲精品天堂| 欧美人妻久久精品二区三区| 久久色激情一区二区三区| 天天天天天天天天天天干美女| 欧美大香蕉同搞| 亚洲色欲一区二区三区| 综合 亚洲 欧美| 大屁股xxxxx| 国产精品久久久久久久久久二区三区| 亚洲欧美色图片| 国产在线精品偷| 亚洲日韩欧美一区二区| 囯产操逼片| 亚洲揄拍网| 日韩卡一卡二卡三在线| 神马久久久久眼| 国产一级舔足在线观看| 婷婷色在线| 亚州高清AV| 先锋色眉乱伦资源| 91N综合网在线| 大地资源在线观看中文第二页 | 熟女突然公开看18禁影片| 久草男人天堂| 欧美在线播放aaaa| 91精品网站| 蜜臀av一区二区三区免费观看| 啪啪自拍九九综合| 男人下部插入女人下部| 秋霞午夜成人福利片片| 91丝袜激情在线| 免费视频在线一区二区不卡| 9999九九九久久久| 久热婷婷| 97这里只有精品| 亚洲黄日韩无码专区| 中国一级特黄大片护士| 青青青草伊人精品| 久操视频免费在线观看| 久久精品久| 女人的天堂大香蕉网| 日韩精品 视频一区二区| 超碰伊人在线| 久久久熟妇熟女国产| 欧美日韩操逼动图| 久久无码精品| 美女AV一区二区| 国产精品一区二区三区在线密挑| 日韩操逼性鲍| 人人妻人人澡人人爽久久av| 殴美日韩m| 大香蕉乱级| 欧美 亚洲精品首页| 超碰综合色| 91狠婷| a级理论午夜日本| 无码精品久久久久久亚洲| 校园春色宗合网| 91在线美女| 爽 好舒服 无码刺激久久| 欧美日韩国产另类综合| 日韩在线电影| 欧日韩一二三f区| 91高跟美女在线播放| 午夜天天碰综合视频| 蜜乳av首页| 久久艹逼视频| 八戒午夜福利理论片| 四虎精品永久在线播放| 男人天堂资源| 亚欧洲日韩国产精品| 日韩精品影视| 欧美激情久久久久| 亚洲在高跟鞋自慰久久在色线| 天天综合日韩网| 91+欧美| 亚欧美天堂在线| 欧美熟妇精品黑人巨大一二三区| 蜜桃不卡一区二区| 江都AV在线| 亚洲人成网www| 欧美极品女人的天堂| 亚洲色吧网| 区一在线观看| 粉嫩久久久久| 91总综合网| 色盈盈影院| 老司机午夜福利视频一区二区| 成熟熟女国产精品一区二区| 久久99草| 欧美淫乱视频| 91精品91久久久久77777俄罗斯老妇姓x| 成人AV在线网站| 91性色| 国产成人拍国产亚洲精品| 大香蕉免费3| 亚洲欧美日韩精品久| 欧美性爱中文字幕无线码| 97二区四区| 婷婷五月天色网| 一区二区三区黄色片a| 超碰色中文| 日韩97在线| 久久99久久99久久99人受| 日本好吊色视频| 女沟厕偷窥piss小便| 一级黄色性爱裸体视频| 大香蕉久久| 91精品国产乱码| 欧美偷拍区| 精品176精品2| 国产午夜在线观看| 亚洲激情在线| 真实高潮91| 骚日日av| 懂色av色欲av蜜臀av| 久久一留热品黄| 91人妻在线视频| 人妻少妇精品一区二区三区| 婷婷情色综合网| 国产2.3.4区| 欧美日韩日产免费网站看| 国产精品女同| 日骚逼视频| 婷婷亚洲综合| 国产精品伦理| 国产成人自拍视频在线| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 欧美色三级片91| 亚洲综合另类色图| 中文字幕jul-617人妻熟女| 久久综合女优| 另类图片天天影视| 爱爱60秒免费视频| 91高潮| 日韩人妻中文视频| 曰韩少妇无码| 亚洲图片欧洲图片aⅴ| 亚洲A色| 亚洲第一免费视频| 一级黄碟在线看| 另类欧美色| 欧美后进式| 国产精品69久久久久孕妇欧美 | 熟女探花啪啪| 欧美人妻精品| 日韩久久.一级黄色片| 哑洲在线| 蜜臀久久久久久999| 加勒比伊人| 久操 高清| 国产剧情AV不卡在线观看| 欧美色宗合| 日日噜噜夜夜久久亚洲一区二区 | 9精品久久| 男女激情黄色网址| 九九热av| 人妻社区男人天堂| 超碰成人国产| 国产精品人妻无码久久久互動交流 | 5252色欧美在线| 国产精品久久99日日| 青青青青青手机视频| 人人超碰在线观看黄| 免费毛片在线播放| 呦呦一区| 夜夜躁狠狠躁日日躁av| 大香蕉免费中文| 91丝袜美女国产| 五月丁香成人网| 九九碰九九爱97| 99热最新| 亚洲色色色| 亚州精人品大香蕉| 国产久久一区二区午夜| 欧美一区二区观看在线| AAAAAAAAA黄片| 久久久久人妻二区精品叶可怜| 在线视频亚洲无码| 天天看天天干| 操逼视频国产无套| 熟妇的味道HD中文字幕| 91精品91久久久中77777| 蜜桃精品一区二区三区久在线| 嗯嗯,啊啊,国产精品| 熟妇高潮一区二| 在线综合 亚洲 欧美中文字幕 | 久久大香蕉97| 国产AV人人夜夜澡人人爽麻豆| 麻豆精品A片免费观看| 91国产精品在线看| 婷婷综合在线观看| 中日无幕一二三四区| 顶级少妇BT天堂| 91操操| 国产无遮挡| 亚洲 se图 欧美电影| 97超碰巨乳| 青青草一区二区三区四| 天天在线91| 香蕉国产97| 欧美天天干| 久久精品国产亚洲AV先锋| 国产精品久久久久久亚洲色欲| 欧美Ⅴ性爱| 黑丝制服中文字幕| jiujiujiujingpin| 久超碰这里只有精品| 啊啊啊啊啊好多水| 久久久国产av美女私房| 亚洲熟伦熟妇AV无码春色| 人妻丰满熟妇一区二区三| 91人妻素女| 水澄无码AV| 一区 欧美 日韩 麻豆| 亚洲视频二区| 超碰91在线| 六十路日本| 亚洲成人妻日韩在线| 丝袜美腿操av| 国产毛片在线| 91挑色欧美| 乱伦熟女论坛| 乱伦系列一区二区| 啊啊啊好湿久久| 欧美天堂亚洲电影院一区在线播放| 日韩综合97p| 三级精品三级在线观看| 亚洲激情AV| 日韩97视频| 亚洲女毛多水多21P| 五月天色图影视| 欧美色青| 国产精品久久久久久片| 亚洲视频,小说| 麻豆国产精品午夜视频| 天堂日本亚洲欧美| 女生久久网| 国产一区96在线| 91性网| 五月婷婷综合网| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 在线观看国产黄色| 美女黄码视频午夜| 日韩一级二级三级免费看完整版| 美女尤物福利视频| 不卡在线观看视频| 欧美黄色片AAAAA| 97se亚洲| 蜜桃精品一区二区三区ww| 91老司机精品| 狠狠躁AV| 国产乱伦性爱区| AV色五月| 大香蕉人妻| 亚洲国产97| 神马影院午夜福利久久久| 女人被男人桶爽视频网站| 亚洲日本大香蕉1| 夜夜嗨一区二区| 亚洲啪啪视频免费| 农村妇女精品一区二区| 五月丁香啪啪啪| 老熟女综合网| 精品一区二区麻豆| 熟女乱伦二区| 午夜精品久久一区二区| 久久久久大香青草精品综合| 国产一区二区三区影片| 亚洲春色欧美| WWW.加勒比人妻一区不卡.com| 国模无码一区二区三区在线| 1240青青草一区二区三区视频天爱| 久久久工口| 丁香色色网| 网友自拍第一页| 茄子社区国产精品| 91偷拍欧美亚洲| 狠狠干狠狠色| 岛国片国产成人亚洲播放| 麻豆91熟妇人妻中文字幕茄子| 91AV天美在线视频| 久久久噜噜噜久久久| 久久久夜夜嗨免费视频| 秋霞午夜成人福利片片| 超碰导航97| 裸体美女久久久| 精品十三区| 综合色图区| 日韩性爱再线视频| 乱伦图一区| 亚洲伊人成综合成人网| 91无码人妻精品一区二区三区蜜桃| 97欧美色资源| 中文字幕片| 75大香蕉| 天天干一干| 天天操综合网| 超碰三级秋霞| 99re9在线| 91在线美女| 婷婷三区| 亚洲av热热色| 后X久久| 67194无码不卡| 中文97国产| 久久蜜色情在线视频xxx免费观看| 不卡九肏| 有码人妻系列| 欧美综合色站| 日韩啪啪啪视频|