日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

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
返回資訊列表
99人妻| 亚洲双插| 中文字幕乱亚洲美女精品一区| 囯产精品久久久久久久久久梁医生| www.99中文字幕| 操狠狠| 久久久久国产精品片区无码直播| 蜜臀99久久精品| 一级黄碟在线看| 欧美亚洲情色| 成人五月香网在线| 中文字幕欧美丝袜07资源| 亚洲欧美在线观看免费| 色色色色色色色色综合| 97精品久久| 国产对白刺激视频| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 不卡六六在线91| 久久riav中文精品| 大香蕉视频啪啪啪啪| 欧美人与动性人交a| 男人的天堂啪啪啪啪啪蜜桃不卡| 大香蕉性欧美| 黑人黄片在线免费观看| 久久精品女同亚洲女同13| 无码区蜜乳| 麻豆乱码久久精| 思思热国产高清| 男人天堂2019亚洲| av毛片aaaaa免费看| 久操综合在线| 夜夜爽夜夜爽| 日本丝袜美腿人妻九九| 国产黄色在线播放观看| 淫骚熟女一区二区三区| 欧美性爱日韩性爱| 天天草AV| 亚洲国产欧美一区二区潘金莲| 夜夜嗨一区| 日本午夜精品理论片A级APP发布| 大乔未久88一区| 国产精品久久久久无码Av网曝门 | 婷婷五月成人| 欧美啪啪色吧在线| 欧美78p| 国产精品熟女一区二区三区| 国产suv精品一区二区四区999| 亚州综合网| 超碰色美女| 日本污ww视频网站| 永久免费av无码网站国产app| 亚洲五区熟女| 日韩欧美一级特黄大片| 清纯唯美亚洲综合| 国内操逼视频二区| 插入综合网| 天天看天天日天天操| 午夜天堂精品久久| 日韩人妻无码专区| 亚洲欧美一区二区网址| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 亚洲国产精品久久久久久久久久| 亚洲精品人妻在线| 欧美亚洲综合高清在线| 诱惑人妻欧美一区在线播放| 人人做人人妻人人夜视频| 加勒比aⅴ| 伊人青青一区成人视频在线观看区| 热无码中文亚洲H一道本一区二区| 亚洲少妇免费视频\| 五月丁香影视| 操逼国产免费| 免费看片黄| 日日骚av| 久久噜| 亚洲aw毛茸茸在线| 欧美.亚洲.另类.丝袜.制服.诱惑| 欧美色999| 熟女91网| 91最新综合| 鲁鲁色综合网| 黑人黄片在线免费观看| 亚洲精品自拍| 久久超碰网| 一区二区蜜臀| 91总综合网| 色综合久| 欧美亚洲第一页| BBBBB97COM| 久久日本熟女精品一区| 女同性恋一区二区三区精品视频| www.超碰在线| 欧州一区二区三区四区| 国内一级精品| 涩综合导航| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| 理论久久婷婷网 8| 蜜色网色哟哟| 亚洲中文字幕妇伦久久| 可以看的av| 色情综合网| 亚洲五码一区二区三区| 欧美一级黄片免费播放| 黄色AAAAA欧美| 丁香婷婷五月| 成人毛片免费| 国产色图乱伦| 91无码西班牙视频在线| 久久久蜜桃臀无码视频| 久久国产乱子伦精品免费女,网站| 97久操| 黄页网站成人免费| 五十路熟女在线不卡观看一区二区| 青青草大香蕉在线视频| 夜夜 中文视频rt| 国产黄a三级三级三级av在线看| 成人网站 免费观看| 无码操逼网| 熟女乱伦A| 日韩 欧美 另类 人妻| 激情黄色片在线观看| 91w欧美| 97美日韩视频| 91 亚欧| 91狠狠狠| 清纯唯美综合| 精品视频一区二区| 国产AV色黄看到爽| 国产精品久久久久av| 93人人操人人| 99热在线播放| 区一在线观看| 色五月天AV| 动漫av中文| 日韩精品国模| 五月婷亚洲精品天堂| 中文字幕熟女人妻丝袜| 在线观看不卡一区二区三区| 成年女人黄网站| 人人妻人人狠人人| 97超碰69| 伊人久久久日韩一区| 99久久9| 肥臀熟女一区二区三区视频| 波多野结衣之双飞调教在线播放| 人人操人人舒服| 八人操人人摸人人看| 人人妻人人狠人人| 国产久久一区二区三区野外在线| 亚洲综合性网址| 乱色老一区二区三区的观看方式| 9999亚洲精品| 99热大香蕉伊在线| 免费超碰97久久| 另类老少妇| 欧美色图亚洲色| 四虎午夜影院| 91蜜臀熟女| 美日韩在线不卡人妻| 亚洲一区二区中文字幕| 精品国产Av无码久久久伦古装| 日本潮催一卡操| 久久AV无码网址| 日韩人体偷拍| 中文字幕色AV| 国产中文字幕在线点播| 超碰成人免费| 久久国语| 大屁股人妻女教师撅着屁股| 亚洲欧美日韩精品久久久一区二区| 精品人妻伦一二三区久久| 国产精品肉丝自拍| 久久9精品| 天天做日日做天天欢。| 亚洲熟女乱色| 色网色网色网色网色网色| 强奸乱伦AV网站| 欧美久久九九| 色牛aV| 91天堂色男人的天堂| 18精品一区| 91欧洲入口| 密乳AV免费观看| 大香樵伊人网| 91视频综合| 亚洲欧美在线观看免费| 精品精品精品| 亚洲第二页| 国产一区自拍欧美日韩| 亚洲色悠悠久久88| 国产丝袜美女在线一区| 人妻精品4K4K4K4K4| 久久久久久中文| 啪啪资源网| 图色综合网| 天天拍夜夜| 日本免费亚洲欧美| 青青草华人在线欧美在线| 福利操逼| 淫乱图区 | 夜夜 中文视频rt| 精品国产一区探花在线观看| 日韩情色视频| 玖玖爱在线视频免费观看| 七久久久| 午夜性生活av免费在线看| 亚洲少妇色| 亚洲丝袜二区在线| 97人人草| 色五月av| 性色一线| 日韩欧美午夜一区二区| 九九热超碰97亚洲最新香蕉| 日韩精品碰碰| 亚洲淫色网中文| 熟女这里只有精品6| 色一射色一射| 久久欲| 爱爱动态试试看6 0秒| 日本人妻中文字幕精品| 精品九九九九九九九| 黄色免费网| 日本东京热大香蕉a片| 少妇熟女1区2区3区| 日本 免费 一区二区三区 久久香蕉 | 67914在线精品观看| 国内偷拍精品一区二区| 美女的肌被草喷水视频| www.大香| 999色欧美中文字幕| 992这里有精品| 国产视频一区二区在线观看| 另类小说综合网| 99视频自拍| 丝袜 亚洲 偷拍| 亚洲十八禁止| 岛国福利在线精品播放| 爆乳免费黄网站| 亚洲AV乱码专区国产噜噜亚洲| 一区在线精品中文字幕| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 玖玖97综合| 人妻三级在线中文字幕| 久热久| 色欲无码人妻日韩欧美精品| v91av| 久久人妻97久久久久久久| 久久久久久久久一区二区三区| 亚洲AV无码天美传媒一区| www男人天堂| 中亚av| 热无码中文亚洲H一道本一区二区| 国产超碰在线一区| hd成人一区二区在线| 超碰97久久| 久久中文色图| 亚洲AV秘 精品久久老牛影视| 91中文字幕在线观看| 天美麻花大全视频| 尤物视频一区| 久久久久白虎| 日本天天干天天日一区| 欧苏综合色综合| 色色福利| 日韩性爱小视频| 厕所偷拍在线| 操逼网免费无码视频| 日韩无码极品| 国产日韩怡红院| 色偷偷超碰亚洲| 国产有码一区| 亚洲无套久久嗯嗯| 极品极品色影院| 久久性爱视频免费看| 97欧美日韩精品| 啊啊啊啊啊啊啊啊要喷了| 免费看美国人人爽,人人操| 国产亚洲精品农村妇女| 性色AV蜜色av色欲av| 果冻传媒A片麻豆熟妇人妻| 丝袜综合| 五月丁香激情四射| 久久视频少妇美女| 久久草视频污视频| 亚洲91亚洲| 超碰97起碰| 午夜精品久久久久久久99蜜桃一| 日本视频在线中文字幕| 97国产精品一区二区传媒公司| 97 超碰 人人做 人人爱| 中文字幕一区av| 免费av大片| 少妇高潮特黄A片| 天天看天天日天天操| 大香蕉中文网| 亚洲欧美内射| 亚州五月| 国产91丝袜 在线播放| 中文字幕精品三级久久久| 久热久| 国产白领连续中出在线观看| 亚洲综合性感在线| 青娱乐大香蕉| 久久久久网站-538在线视频-欧美永久乱码| xxx亚洲午夜天堂| 欧美综合骚| 99re视频在线观看这里只有精品| 久操大香蕉手机视频在线看| 丁香久久| 五月丁香啪啪啪| 涩涩五月天| 国产成人在线观看综合| 天天影视网综合少妇| 久久激情五月| 97AV爱| 久久人妻四季| 日韩精品9区| 热久久国产精品视频大陆精品| 色哟哟1区2区| 日韩美女,国产传媒,视频一区| 六月丁香五月婷婷| 久久久久七视频| 美女黄页| 亚洲国产剧情少妇激情| 91老熟女老女人国产老太| 综合久久99亚洲人妻中文在线| 动漫av中文| 中文字幕精品三级久久久| 日韩特一级久久| 97操B| 天天拍夜夜| 国产精品免费1区2区视频| 乱伦熟女专区| 在线啊v一区| 久久99网站| 日本不卡三级网在线播放| 9 7超碰在线免费观看| 加勒比av中文| 我要色综合网站| 东京热男人的天堂| 强奸乱伦AV网站| 午夜视频好爽啊| 人人射人人操人人摸| 亚洲综合在线视频| 性爱AV天堂| 韩国毛片一区二区三区| 午夜小电影在线插入淫高潮| 国模不卡| 无码99| 伊人 俄罗斯 a v| 人妻丝袜一区二区三区在线| 国产一区自拍欧美日韩| 91久久久久久| 成人一区二区三区四区| 九九九精品美女| 尤物网址| 婷婷五月天久久精品视频一区二区三区 | 最新无码国产| 婷婷91| 亚州成人A√| 久久日韩肥臀| 熟女五十路一区二区三| 91在线限制级| 加勒比99999| 欧美色www亚洲国产阿娇要播| 综合97| 久久五月份| 欧美超碰人妻97| 伦伦成年午夜免费视频| 亚洲综合五月天| 欧美婷婷久久| 欧美影院一区二区三区| 亚洲精品人妻吞精av| 欧美色一二三| 97色网| 国产美女自拍AV| 人妻天天爽夜夜爽爽| 欧美亚州色的图| 日韩激情无码影院| 五月久久HDAV| 中日韓欧美高清| 国产热RE99久久6国产精品首 | 亚洲一区日韩精品| 熟女一区二区| 欧美日韩中文视频播放| 欧美精品成人亚洲| 97超碰精品图片| 免费观看啪视频| 九区国产| 亚洲一区二区中文字幕| 淫骚熟女一区二区三区| 大香蕉强奸乱伦| 四季AV一区二区凹凸精品小说| 婷婷伊人五月| av操操不卡| 日韩一区二区精彩视频| 日本天天人人狠狠在线日美女| 亚洲毛片基地专区| 先锋精品av色鲁| 黄骗免费网站| 99丝袜福利在线播放| 97欧美精品| 天天添天天干电影| 在线观看不卡一区二区三区| 人妻久热在线| 八戒午夜福利理论片| 亚洲综合性感在线| 天天日天天搞天天干| 亚洲AO在线| 91精品微拍福利| 屌妞视频久久久久久久| 夜夜影视四色| 天天天堂影视日韩亚洲91| 国产精品成人无码av| 久久99久久99精品天美传媒棢·纸:.| 国产亚洲色婷婷久久99精品91| 欧美精品欧美精品系列| 97人人操人人摸人人爱| 欧美 日韩第一性色| 亚洲国产激情国产av| 大香蕉中文网| 东北女人av| 人人贴人人摸| 色欧美色交综合| 91蜜臀熟女| 日韩肏逼视频| 91女优在线观看 | 少妇高潮流水av免费| 久操影视| 婷婷性爱| 日韩黄色av中文字幕| 超碰97首页| 天天色综合天天操| 操碰97| 九九国产热| www.久久| 亚洲欧美另类小说| 新久久AV| 尤物视频网 刘玥| 久久精品人体| 在线观看高清AV| 九九九草| 国产13区| 国产麻豆一级精品视频| 屁股久久久久久久久久| 精品176精品2| av九九| 欧美成人A√在线一区二区| 亚洲免费97免费| 欧美中出1| 国产女大学生AV| www. 男人天堂成人在线| 大香蕉男女超碰精品在线| 91啦人妻| 99少妇| 大香蕉伊人在线成人AV在线观看| 人妻精品视频一区二区| 午夜视频久久久久一区| 九九操久久国产免费视频| 少妇同性| 另类综合另类| 粉嫩粉嫩一区性色AV片| 一级做a爰片性色毛片久久| 亚洲素人综合| 人妻激情在线视频| 国产一区二区三区不卡手机在线| 婷婷深爱五月| 综合五月婷婷亚洲一区| 亚洲日韩在线a不卡99精品| 久久精品一区一起草| 色91综合网| 密桃99999| 婷婷伊人綜合中文字幕小说| 亚洲欧美在线观看免费| 免费国产电影一区二区| 欧美裸体美女日麻屄| 夜夜操一区二区| 熟妇女人妻呻吟久久AV| 97超碰国产亚洲精品资源| 中文字幕性感少妇av| 国产精品免费日韩| 搡老女人老妇女AAA一VU麻豆| 欧美色狠| 清纯唯美亚洲综合| 老熟乱一区二区三区四区| daxiangjiao你懂的| 神马久久久久久久久久| 亚洲国产综合久久久性感熟妇| 97福利视频| 色五月激情网| 婷婷亚洲综合| 欧美很很操视频| 无码少妇精品一区二区60岁老人| 综合欧美日本三级| 日本操逼视频导航| 亚洲综合一区二区| 六月丁香久久| 97精品综合| 丁香成人五月天| 大香蕉综合| 色情五月综合婷婷| 口爆吞精在线观看| 日韩激情毛片一级久久久| 欧美不卡五十路| 777超碰| 97爱亚洲| 蜜臀一区二区三区在线| A 天堂| 中文字幕国产在线天堂| 国产美女口爆吞精视频| 俄罗斯一区二区视频在线观看| 欧美成人性爱视频在线播放| 岛国1区2区3区在线观看| 国产亚洲日韩欧| 国产在线视频二区| 秋霞曰韩R级| 性做久久久久久免费观看软件| 亚洲激情在线一区二区| 婷婷综合网站| 第四色色综合91| 99九九久久| 日韩 欧美 国产 麻豆| 蜜臀一二三区| 欧美精品宗合| 国产午夜激片Av毛片不卡| 日本日皮视频逼| 国产小黄片在线免费观看| 亚洲色五月| 4141514逼喷水三级片| 欧美亚洲日韩16色| 亚洲区小说| 91丨国产丨白浆秘 洗澡动漫| 国产成人99久久亚洲综合| 十八禁成人网站在线观看| 中文字幕 码 自拍 视频 区| 欧美狠狠弄| #NAME?| 青青草依人大香蕉| 天天噜| 国产午夜福利合集| 人看人人摸人人操| 97欧美精品综合| 色踪合AV| 立川理惠被中出无码| 欧美日韩精品一区二区三区高清| 超碰在线国产| 红桃视频高潮| 欧美综合综合| 狠狠操狠狠操操| 国产操逼逼网| 日韩国产品视频中文字| 日韩97超碰| 国产美女口爆吞精视频| 精品少妇一区二区三区免费观看| 97AV在线免费观看| 国产成人91一区二区三区| 亚洲欧洲国产综合av| 欧洲精品在线播放| 超碰99re| 婷婷亚洲色| 久操视频免费观看| 亚欧性爱无码| 爱欲AV| 黄色工厂这里只有精品| 色久桃花影院在线观看| www.狠狠干.coom| 97人人夜| 欧美大香蕉久| 东京太热久久久| 久久熟女嫩草成人片免费| 国产肏逼网站| www久久久| 啊嗯嗯啊好大好爽| 中文字幕一区二区日韩网| 久久久精品国产亚洲伊人| 欧美女同在线| 嗯啊抽插大香蕉网页| 精品人妻一区二区三区-国产精品| 久久综合超碰| 中文字幕精品一区二区精| 日本一二三高清| 国产精品九九九| 97人人射| 欧美伊人电影| 欧美很很操视频| 啊啊啊在线看| 91东京热男人的天堂| 色第一页| 日本操逼视频在线| 超碰爽人妻熟女Av| 99久久久无码国产精品性啊聊| 丁香五月久久| 97碰久久| 中文啪啪视频| 日韩偷拍一区二区三区 | 中文字幕在线日亚洲9| 五月天亚洲网| 久精品无码av一区二免费国产在线观看| 伊人色综合欧美| 最好看的中文字幕在线2018| 亚熟hd视频在线| 免费的黄片有限公司| 亚洲欧洲色情高清| 伊人久久大香线蕉无码| 91伊人久久在线| 久久社区一区二区三区| 国产后入清纯| 九九碰九九爱97超碰| 亚川综合视频| 色在线69堂| 亚洲成人性爱在线观看| 夜夜久久久| 日本色色色视频| 亚洲a色| 99久久这里只有精品| 国产精品高潮久久久无码| 亚洲另类久操网| 精品国产乱码| 嗯~啊~快点 死我视频免费看网站| 黄片直播三级黄片两女一男| 亚洲综合在线91| 天天影视色香色欲| 精品人妻一区二区视频| 久久久久久久久9| 亚洲男人bt天堂| 日产操逼| 麻豆人妻偷人精品无码视频| 99热婷婷| 亚洲AV操| 大香蕉99999| 中文字幕日韩精品一区二区三区| 亚洲成人性爱在线观看| 国产操逼视频在线观看| 天天干天天日天天射黄色| 久草电影网| 激情网五月天| 老司机天天操| 国产精品丝袜在线| 99www.bibizy香蕉资源国产一区二区三区高清 | 啊啊啊啊啊舒服| 婷婷五月丁香五月| 91影库| 九九九国产| 中文字幕十五区| 天天干少妇| 色情乱伦AV| 97久久超碰| 日韩二区三四区五区六区在线看| 夜夜爽爽爽| 国模无码一区二区三区在线| 亚洲一区二区在线观看91| 国产农村妇女精品一二区| 激情综合五月婷婷| 一区操逼日比视频| 国产精品人妻免费精品| 91美女视频电影| 亚洲精品欧洲精品| 午夜αv| 花野真衣| 欧美亚洲色图另类国产| 人人操人人干xxx| 国产激情在线| 国产丁香精品露脸视频| 国产成人主播| 另类av天堂| 偷拍 亚洲| 26uuu国产| 自拍偷拍2025在线观看| 日本操BAV| 热久久国产| 秋霞操逼片| 日韩欧美蜜桃精品久久中文字幕久久| 亚洲视频二区 | 日本日逼高清| 翔田千里AⅤHD无码| 神马麻豆福利院| 国产日韩怡红院| 人人九九精| 果冻传媒一区二区三区| 欧美美女后入| 日本中文字幕一区| 我中文字幕6区| 欧美在线视频播放| 成人精品一区二区三区| 老司机午夜福利视频一区二区| 大吊色| 性色中出| 97这里都是精品| 99激情| 天天综合91在线| 九九热在线视频| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 精品人妻中文字幕高清| 亚洲欧美不卡线| 91精品人| 欧美日韩午夜精品一区二区三区| 国产亚洲精品激情| 国产日韩色综合| 国产极品99热在线播放69| 波多野42部无码喷潮在线观看 | 亚洲色图综合网| 92大香蕉| 自拍六区| 色综合加勒比| 国产一区二区免费福利片| 自拍偷拍 日韩欧美| 凹凸精品熟女在线观看| 自拍偷拍草一草| 无码高清国产AV| AA特级绝黄| av凤凰久久久| 青青草日韩无码| 日韩丝袜人妻AV| 中文字幕黑人大片| 亚洲国产综合久久久性感熟妇| 色女综合| 亚州男人的天堂| 久肏视频字幕| 色欲av国内精品久久久久久| 色在线亚洲视频www| 亚洲午夜福利视频| 男人的天堂2010| www.操| 偷拍五区| 九月伊人中文字幕| 国产精品久久久久久久AV大片| 中文字幕乱在线伦视频中文字幕乱码在线 | 骚逼自拍99| 青青青草伊人精品| 欧美日韩在线小说 | 天天综合中文字幕 91| 国内精品嫩模A∨私拍小视频| 成 人片 黄色大片| 日本久久精品| 九九国产热| 亚洲午夜精品久久久中文影院| 精品综合久久久久久五月天| 国产大学生口爆吞精合集| 九九热AV| 欧美成人9797| 无码人妻丰满熟妇区毛片| 欧美综合另类| 午夜福利精品| 欧美78p| 精品少妇人妻| 亚洲最新Av| 欧亚久久偷拍视频| 一区二区三区在线日韩影院观看| 人妻精品一区二区| 精品亚洲国产成人av网站| 中文操嬖片。| xxx0国产在线播放| 加勒比av官网在线| 日韩免费性爱视频在线观看| 极品色| 日本不卡三级网在线播放| 亚洲在线| 美女淫穴| 日韩不卡av一二三| 亚洲欧美清纯| 青青草五月天| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 中日992视频| 围产精品一区二区三区视频播放| 91操熟女| 天堂8在线新版官网| 国产人妻精品久久久一区二区三区 | 97精品97久久| 内射夫妻三片| 无码91| 91黄射| 久久九九视频九九视频| 91在线视频免费中出| 97免费视频在线观看视频| 国产真乱mangent| 国产中文字幕曰本毛片| 精品国产国产AV| 欧美日韩欧美| 国产AV高清AV无码| 熟妇一区,二区,三区。| 国产福利在线视频网站| 成人久久精品| 国产一区二区三三视频| 诱惑人妻欧美一区在线播放| 亚洲精品久久久久毛片A片拉屎 | 家庭乱伦网站国产| 96久久久精品| 一本一道vs波多野结衣| 亚洲日产专区婷婷| 91九色蝌蚪在线观看| 亚洲欧洲无码97久久精品| 伊人一区二区在线播放| 夜夜嗨av午夜成人| 另类小说综合网| 亚洲精品欧美专业| 波多野结衣一级视频| 人妻大相焦在线| 人人操人人操人人操人人操人人操人人人11.CM | 嗯嗯啊啊啊好爽| 亚洲欧洲另类| 97操综合| 五月激情综合网| 欧美亚洲手机在线| 亚洲少妇喷视频看| 传媒在线观看一区二区三区| 偷窥自拍亚洲天堂网爆| 婷婷五月天激情四射| 日本三级中国三级99人妇网站| 99在线精品视频| 91美女在线精品视频| 在线综合网| 久久99精品九九久久久婷婷| 欧美人妻精品一区二区| 欧美精品亚洲精品日韩传电影| 91精品国产麻豆国产自产在| 99少妇| 99啪啪| 一起草三级AV电影在线观看 | 國產尤物AV尤物在線觀看| 九99久久| 久热免费视频| 国产一区二区二区按摩精品啪视频| 综合激情97| 中日韩久久久| 男人的天堂VA| 好爽,再快点啊哈嗯嗯嗯嗯| 性爱乱伦视频免费| 欧美91色| 伊人综合色网| 日本一区二区三区午夜观看| 岛国不卡超碰护士AV在线播放| 综合色色网| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲综合另类欧美久久久| 国产中文精品一区二区在线观看| 久久久久久久久女黄| 久久天天摸| 日本成人A片免费看| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 欧美日韩免费专区在线| 日本熟妇一区二区三区| 日韩78m视频| 九九碰九九爱97超碰| 亚洲狼狼干综合1| 国产树林里野战在线看| 无码一区免费在线不卡| 天天热精品| 天天综合有色网| **一级毛片国产| 国产日韩在线播放av| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 五月婷亚洲精品天堂| 国产高清在线自在拍69| 婷婷伊人一区| 五月丁香啪啪啪| 国产传媒午夜理伦精品| 9久精品| 日本黄色天堂| 色五月第四色| 亚洲日本加勒比在线| 日本午夜福利影院| 91精品微拍福利| 东京热男人天堂| 欧美骚少妇| 久久婷婷五月天| 妺妺跟我一起洗澡没忍住| 香蕉国产精品麻豆亚洲欧美日韩| 欧美日综合| 日韩 欧美 国产 麻豆| 欧美色五月| 婷婷精品视频| av在线免费一区二区| 家庭乱伦国产精品| 黄页av| 亚洲欧美97√| 色97综合中文字幕| 天天α片| 日韩av三四区| 久久精品色欧美aⅴ一区二区| 久久五月天婷婷丁香中文字幕| 97欧美在线| 日本在线999| 久久禁| 日韩性爱毛片操骚逼| 天天插天天插| 啊啊啊啊啊啊啊啊啊啊在线观看| 极品白嫩福利在线| 日本人体九九九九九九| 天堂蜜桃无码视频一区二区| 亚欧性爱在线无码| 午夜福利免费精品视频| 亚洲色色探花| 国模私拍一区二区三区神乳| 国产成人超碰在线| 男女无套 免费网站| 射久久| 97天天摸天天爽| 99re在线| 97精品网| 亚洲无线观看久久| 日韩欧美福利视频看看| 妇女性内射冈站HDWWWCOM| 国产免费黄色一级大片| 91丝袜在线观看| 亚洲福利影院一区久久| 亚洲AV麻豆Aⅴ无码电影一| 日韩综合无码一区久久92| 人人操人人爽人人操人人| 91啦人妻| 国产成人自拍视频视频| 亚洲第一页第二页激情| 久久黄片国产一区二区| 国产一级特黄大片处女| 色综合久久av| 女人 A一级| 中文字幕在线观看二区三区| 天天插天天操| 激情婷婷五月天| 美女尤物福利视频| 九九热精品视频在线观看| 美女露胸露屁股| 91中文精品日韩欧美在线 | 97精| 99e久久国产精品| 精品人妻一区二区视频| 欧美黄片欧美黄片xxx| 色婷五月| 欧美久热| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 成人无码专区精品视频| 第四色亚洲色图| 亚洲精品1区| 91久久久久| 97久久超碰亚洲| 亚洲欧美国产中文视频| 久操网址| 99久久久| 亚洲午夜免费狠狠干| 大香蕉宅男伊人| 亚欧美色图| 97超碰超碰| 日韩免费一级性爱视频| 丝袜熟女一区二区三区| 欧美.亚洲.另类.丝袜.制服.诱惑| 超碰97资源大奶| 国产精品动态一区二区三区四四| 超碰97护士| 午夜超爽| 亚洲宅男天堂| 天天综和| 婷婷国产精品一区二区| A级国产欧美激情在线| 色乱二区| 五月丁香啪啪啪| 亚码人妻| 亚洲色图欧美色图另类图片| 国产宅男宅女在线观看| 亚洲另类在线观看| 性色av一区二区| 猛猛干| 人妻 丝袜美腿 中文字幕| 超碰久久性爱| 欧亚日本情色| 日韩激情电影中文字幕| 欧美做爰无码A片视频| 超碰天天操| 97超碰超碰| aaa一级黄片| 久久精品一区| 友优传媒精品在线一区二区| 色噜噜精品一区二区三| 99自拍B亚洲| 天天综合网在线观看| 人妻系列无码专区中文有码| 六月婷婷激情| 国产精品毛片| 色色网91| 亚洲。日韩。欧美| 老司机香蕉| 五月天婷婷综合| 五十路熟女,国产欧美精品区一区二区三区| 爱妃国产亚洲视频中文字幕| 超碰免费在线| 综合网亚洲1| 亚洲h片在线免费观看| 久久9亚洲| 91人妻熟女| 日韩成人大片在线观看| 九七毛片九九毛片 | 日本97久久久精品| 亚洲日韩少妇一道本视频| 激情五月综合开心五月| 欧美日韩情色一区二区| 亚洲Av诱惑| 久久婷婷五月综合| 欧洲一区二区三区四区在线观看| 亚洲精品免费中文字幕| 艳美熟妇先锋一二三区| 91人人| 加勒比无码一区二区三区| 加勒比色99999| 翔田千里av一区二区三区| 久久久一区二区| 国产操偷| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 18禁精品网站在线看| 欧美日韩青操| 国产精品女生av| 久久免费精品96| 久久男人的天堂| 日本不卡三级网在线播放| 爱av免费| 97视频在线视频| 欧美日本中字另类在线| 国产情色在线| 亚洲一卡2卡3卡4卡乱码网站| 国产外初女出血视频| 屁屁影院一区二区三区国产| 丝袜天堂网| 久久婷婷五月综合| 欧美性爱一区二区三区| 午夜人妻精品综合在线| 亚洲精品蜜桃久久久| 久久久爆乳翘臀一线天伦理视频| 91熟女丨91老女人| 色噜噜综合在线| 欧美岛国精品在线观看| 一区二区三区 丝袜高跟| 国产精品干干干| 亚洲蜜臀懂色| 亚洲综合另类小说色区亚洲成av人片在www| 日本99一区二区| 欧美色性爱| 亚洲Av诱惑| 免费看污网站| 2017人人操,人人摸| 天天影视91看看| 亚洲少妇喷视频看| www国产无码| 亚洲宗合网| 无遮挡h肉动漫在线观看| 青草精品视频-日本久久久久网站| 丁香五月激情综合| 亚洲天堂五月天国产| 国产免费久久精品99re韩国| 操操逼操操逼操操逼逼| 日本天天干天天操一区| 国产精品乱码久久久久久久久久久久| 天堂а√在线最新版在线| 91操熟女视频| 精品国产自在在线99| 欧美日日操| 超碰9 7女人| 丰满少妇人妻久久久久久| 先锋激情∨在线视频播放| 成人青青草原伊人| 91N五十路| 国产精品无套内谢| 蜜臀久久99精品久久久久久-DVD原版全| 亚洲中文人妻色| 日本www操操操| 亚洲成人激情小说视频| 加勒比伊人综合| 亚州伊人色综台| 午夜久久无码1000合集| 久久春色| 色香欲天天天天综合色| 麻豆av一区二区三区| 女人喷水视频在线观看| 97欧美超碰| 一本大道久| 国产精品久久久久久夜夜夜| 最近的最新的中文字幕视频| 欧美中文字幕日韩在线| 国产精品伦理| 操亚州| 欧美天堂日韩三级国产传媒| 国产麻豆一级精品视频| 久久久久亚洲熟妇熟女| 快播电影网日韩新片| 97色97好| 婷婷五月天小说| 9ⅰ久久久天天| 午夜黄色免费在线观看| 精品国产a∨一区天美传媒| 午夜后入| 国产精品亚洲免费| 26uuu国产成人综合| 中国一级操逼视频| 91丝袜在线观看| 99精品九九九九九九| 亚洲高清在线se| 九热大香蕉| 有码人妻系列| 台湾佬激情综合| 9色在线| 亚洲综合色婷婷| 综合av社区| 中文?日韩?免费?精品| 久久大| 欧美一级二级三级| av2014 日韩在线中文字幕| 制服诱惑亚洲一区二区三区在线观看| 国产黑白丝在线| 日韩人妻中文视频| 岛国福利在线精品播放| 亚洲牲交| 色97欧美| av日韩中文字幕| 在线电影亚洲色图| 东北操逼| 久久极品一区二区| 超踫中文字幕| 色色色网站| 中文字幕 国产 精品| 午夜寂寞欧美| 秋霞无码av鲁丝片一区| 国产精品一区二区三区,亚洲综合| 欧美特大AA级黄片| 波多野42部激情无码喷潮| 翔田千里Av在线| 人人做天天爱| 精品视频在线观看| 12一15性XXXX粉嫩国产| 偷拍精品一区二区三区| 国语对白露脸XXXXXX| 亚洲色婷婷久久91| 亚洲乱码精品一区二区| 黄色操人| 中国一级操逼视频| 97这里有精品| 操国产高清| 婷婷伊人五月| 夜夜天天噜狠狠爱2021| 日韩在线性爱免费视频| 97在线视频观看网站| 操逼网免费无码视频| 婷婷久久大香蕉| 亚洲最大的综合性av| 中文字幕成人| 69精品少妇一区二区三区蜜桃| 久久久久久久久久久久久久久乱码| 男人的天堂.com| 日日夜夜噜| 久久精品女同亚洲女同13| 亚洲中文丝袜美腿诱惑字幕| 久久产精品一区二区三区电影| 成年人黄色视频免费| 久久69精品久久久久久久| 秋霞蝌科网日本一区| 久操精品网| 天天精品| 97蜜桃综合| 国产亚洲色婷婷99精品91| 大香交| 欧美日韩亚洲天堂| 午夜一区| 啪啪啪东京| 欧美一级黄片免费播放| 91精品电影18|