国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成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
返回資訊列表
午夜亚洲| 欧美丝袜91| www.色五月| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 中文字幕一区二区三四五区日日骚| 色香欲天天天天综合色| 91在线超高颜值国产| 高清国产性猛交xxxx乱大交| AV中文字幕剧情1区2区3| 国内一级精品| 国产 热久久久久国产精品| 欧美激情性久久久久久| 久久噜| 国产精品第一区第一页| 国产精品不卡一区二区三区| 白嫩国模丰满一二三区| 欧美美女视频| 999精品女人| 韩国毛片一区二区三区| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 97在线免费观看| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日韩一卡二卡三卡| 伊人991| 三级网站超变态精品| 国内毛片国产欧美拍| 熟妇人妻一区二区三区| 成人av免费观看| 秋霞成人一级在线观看| 激情五月综合| 99免费视频| 久久五月份| 国产天美欧美| 日日碰视频网| 最近二区三区视频大全| 手机在线中文字幕国产| 色情综合网| 久久人人看| 欧美亚洲第1页| 欧美色图 人妻| 男人的天堂三级| 男女激情中文字幕| 国产粉嫩蜜臀av一区二区三区| 强奸乱伦免费网站| 青青草依人大香蕉| 开心六月色| 国产成人超碰在线| 久久有码视频| 一区 欧美 日韩 麻豆| 91爆操视频| 色九色久| 97在线观看免费视频l| 黄片直播三级黄片两女一男| 亚洲久久久久| 久热伊人| 欧美精品不卡一二三四在线91| 六月婷激情福利天堂69| 亚洲成人无码影院| 国产欧美一级在线观看| 91丨九色丨国产打屁股| 一级性爱aaaa| 久草视频分类在线| 人妻系列无码专区中文有码| 日本十八禁免费看污网站| 四虎AV在线播放| 丝袜狠狠草尤物 91| 99久久这里只有精品| 中文字幕二区日韩天堂| 精品久久視頻在线| 国产精品一区人妻精品阁在线| 精品少妇人妻av久久免费| 亚洲人妻在线精品| 国产亚洲精品激情| 97在线观看播放视频| 国产又猛又粗又爽又黄| 日韩免费看在线黄色片| 草草网站影院白丝内射| 欧美午夜一区二区三区| 成人电影一区| 狠狠色婷婷7777久| 日韩久久三区| 亚洲 欧美 另类 日韩 人妻一区| 久久、1234| 欧美91精彩| 日本男人插女人的逼黄色| 97超碰久| 亚洲视频精选| 日本成人A片网站| 久久激情视频| 欧美色图成人网一区二区 | 中文AV制服乱伦| 6080YYY午夜理论片在线观看| 日本一级性爱| 性爱AV天堂| 9999久久久久| 夜夜操美女| 黄片色区软件| 欧美日韩少妇色情| 青青操国产夫妻| 丁香五六月啪啪| 福利操逼| 热久久国产精品视频大陆精品| 999九九精品| 1区2区3区视频| 欧美日韩国产在线| 97日亚洲欧美| 激情五月天色播| 日日日骚女人精品| 亚洲综合另类小说色区亚洲成av人片在www| 国产又粗又长视频| 久久久久国产无av| 欧美一二级| 亚洲成aⅴ人片不卡无码| 欧美日韩性爱精品| 玖玖无码超碰| 色婷婷丁香五月| 蜜桃精品一区二区三区久在线| 中文AV制服乱伦| av亚洲天堂资源网站| 亚洲影院成人| 亚洲做性| 亚洲nv男人的天堂网| 婷婷精品国产一区二区三区日韩| 欧美一级久久久久久久大片动画 | 欧美一区二区传媒| 中国国国产一级特黄毛片| 按摩中文字幕| 中文字幕日韩人妻视频一区二区三区 | 久久精品一区二区三区不卡| 国产精品不卡av免费在线观看| 国产四虎在线| 久久久久无码| 眼镜人妻101.com| 天天看片麻豆| 爆乳免费黄网站| 最新亚洲黄色免费电影 | 夜夜躁狠狠躁日日躁av| 久久精品一区| 开心五月激情网| 久久这里是精品| 校园春色家庭伦理欧美激情| 98一区二区精品| 日本天天干天天操一区| 少好三P| 亚洲第一综合| 首页中文字幕中文字幕免费| 亚洲欧洲中文日韩女优乱码| 色欧美在线| 中文字幕97色| 精品人妻1237| 国产刺激视频| 亚洲暴力强奸AV| 国产91影院| 亚欧美色图| 热久久国产精品视频大陆精品| 婷婷五月色| 99热婷婷| 大香蕉操久久| 一二三四日本视频高清| 天天综合色电影| 亚洲中文日韩精品| 性做久久久久久免费观看软件| 亚洲日韩电影| 人妻色偷色噜| 国产h小视频在线观看免费| 九九九999久久久网站| 98福利在线视频| 欧洲乱码一区二区| 久极品在线观看| 清清一区二区三区四区不卡视频| 欧美激情总合网| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 97爱爱爱| 亚洲AV无线| 91艹B视频| 日韩乱中文| 婷婷丁香九月| 丰满人妻一区二区三区大胸懂色| 99热这里只有精| 麻豆人妻精品一区二区| 久久亚洲人妻| 91亚洲丝袜| 天躁夜夜躁2021| 日本幼女18+| 亚洲啪啪综合?v一区综合精品区| 美国日韩黄片| 白嫩国模丰满一二三区| 天天日夜夜| 97超碰逼| 九月伊人中文字幕| 天天躁日日躁XXXXYY| 99九九久久| 久久久久久久少妇| 久9爱精品| 八戒无码国产午夜福利| 色婷婷基地| 精品176精品2| 91亚洲综合在线| 啊好爽受不了无码| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 97任你吞精| 久久伊人网视频一区二区三区| 久色99999| 97aiaiai| 精品国产乱码久久久久久影片| 欧美综合网站999| 久久受www免费人成| 97啪啪| 后入精品| 五月天色图影视| 日本 情色 1区2区3区| 爱妃国产亚洲视频中文字幕| 97中文字幕色| 精品亚洲黄色片 国产精品导航一区二区| 清清草影| 日韩精品人妻一| 青青草日韩免费观看高清在线| 97超碰人人模人人拍人人| 成人网站 免费观看| 91网站18在线| 国产亚洲禁久一区二区| 这里只有97精品| 亚洲第一页色| 欧美传媒| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 日本免费一级AAA大片器| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 97超碰欧美| 欧美色图偷拍另类| 中文字幕 人妻不满 在线视频| 国产精品丝袜久久亚洲不卡| 91 丝袜在线| 欧美猛交黑寡妇中文字幕| 久久999久| 肉丝无码中文高清| 九九亚洲| 最好看的中文字幕在线2018| 插日本熟女视频| 国产超碰| 综合天天网| 亚洲涩图欧美| 啊啊啊啊啊好多水| 99久国产精品午夜性色福利| av资源在线观看少妇| 国内外色色色色色成人视频| 中文乱码99| 在线情色电影 91大| 97综合久第一页| 欧美不在线| 婷婷色色五月天福利| 国产欧美日本亚洲精品| 亚洲中文字幕三级在线| 日本精品性生活久久久| 伊人欧美大香蕉视频| 久久一二三四| 久久鲁干| 91黑丝美女| 综合色区偷拍| 强奸乱伦大香蕉网| av大香蕉网站| 夫妻天天操岛国视频| 日本免费一级AAA大片器| 五月婷丁香| 99爱爱| 麻豆精品一区二区三区四区免费观看| 久操网线| 青久操| 欧美激情综合| 国产亚洲国产超碰| 超碰98综合网| 日本操逼视频免费| 五月色综合| 黄色十八禁| 性色AV蜜色av色欲av| 亚洲AV无码久久久国产精品| 2026国产精品视频| 夜夜操青青草| 综合网久久| 天天综合色图| 日韩午夜啪啪视频| 久9久9久9久9久9久9| 久久久一区二区三区三州| 丁香五月婷婷基地| 5252色欧美在线男人的天堂| 色色五月天激情| 男女啪啪网站免费视频| 日日夜夜狠狠| 伊人九九| 亚洲色天堂日韩中| 久区视频| 久久综合久久综合人久久夜精品| 人妻娇喘 激情视频| 久久性爱大全| 91痴汉| 日人妻视频91| 女上位精品在线| 亚洲日韩精品一区视频在线| 久久9999 | 色色婷婷丁香| 国产自偷| 国产少妇肉丝在线观看| 麻豆91熟妇人妻中文字幕茄子 | 国产精品毛片| 91啪啪视频| 欧美啪啪天堂| 亚殴在线| 亚洲啪啪视频免费| 牛牛久久国产精品视频一二三| 亚洲国产尤物yw在线观看| 九九九九一级| 色五月婷婷中文字幕| 中出91视频| 亚洲美乱| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 人妻激情视频| 熟妇人妻一区二区三区| 大香蕉久| 久久香蕉国产线看观看亚洲女人| 欧美综合站| 性久久久| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 国产原创剧情在线丝袜| 国产女同在线观看视频| 大肉棒导航| 中国探花熟女| 久久性爱视频免费看| 最新精品久久蜜桃| 婷婷操逼| 国产午夜福利专区综合| 九九九九九九免费视频| 蜜桃视频精品一区二区| 日韩激情啪啪| 熟女精品一区二区三区| 自拍偷拍草一草| 日韩成人人妻网站| 国产人伦精品一区二区三区 | 玖玖资源中文字幕制服丝袜| 久久精品性| 日本一级特级毛片视频| 色五月激情AV在线| 神马久久久久眼| 伊人激情五月天一区二区| 91精品人妻一品二品三品| 97视频观看| 无码高清专| 久久大黄片| 久久华人网| 性色中出| 国产精品小视频一区二区三区| 手机在线A片| 九九碰九九爱97超| 丝袜 中出 制服 人妻 美腿 中文字幕| 久久av色| 91色艳| 国产精品一区二区 尿失禁| 欧美人妻少妇| 色狠狠一区二区三区香蕉| 久久超碰大香蕉| 精品区9| 在线国产一区二区av| 亚洲国产成人精品久久久国产成人一区二区| 学生妹天天看| 97在线观看免费| 欧美日韩精品国产91| 国产在线76页| 日本三级中国三级99人妇网站| 制度丝袜99| 亚洲国产精品久久AV| 久久久无码精品人妻二区| 国产熟女精品区| 日本日日色视频| 亚洲中文字幕噜噜噜久久久| 色九区| 欧美十八禁在线看| 人人干人人操人人..com| 午夜一级免费毛片| 影音先锋视频在线| 园内精品自拍视频在线播放| 亚洲好看强奸乱伦| 操我无码| 2020国产精品| 免费一级视频特黄色大片| 少妇高潮特黄A片| 国产精品亚洲天堂网址| 一本久道在线综合视频| 中国东北熟女老太婆内谢| 国产欧美岛国精品一区| 欧美综合区| 国产精品久久伊人| 日本熟妇熟色97一本在线观看| 色区久久| 在线啊啊啊啊| 91色爽欧美| 亚洲吊色| 久久久久久免费电影| 四虎免费视频| 少妇精品| 精品人妻一区二区三区四区不卡在| 再深点灬舒服灬太大了好硬好爽| 探花激情视频| 97AV爱| 亚洲av热热色| 大香蕉伊然在亚洲91| 美女十八禁| 国产99热| 在线无码网站| 黑丝少妇| 天海翼久久| 精品在线78| 夜色91| 2019精品国产无码成人| 三级特黄60分钟播放| A 天堂在线观看视频| 九九九九九九九精品视频| 看日韩美女二区三区免费操逼视频| 热天堂一区二区| 极品AV网站在线观看| 97亚洲自在精品在线观看| 青青草好吊色| 欧美αv.com| 国产精品久久久久av| 欧美色棕合| 亚州高清色综合| 哈哈操电影| AV天堂国产| 大香蕉人妻| 午夜欧美神马久久久久| 亚洲黄色电影| 老司机老司机午夜影院| 久久极品一区二区| 欧洲自拍第一页| 乱抡国产91| 日本黄 R色 成 人网站| 夜夜高潮夜夜爽高清视频一| 东北女人高潮视频| 久久社区一区二区三区| 久草资源在线视频官方总站日韩丝袜美腿 | 蜜桃精品一区二区三区ww| 国产情色在线| 日本1区2区不卡视频| 色综合五月天| 91日韩网站| 国产日韩在线播放av| 人人乐大香蕉| 伦理第一页| 国产精品色片一区二区| 粉嫩AV一区夜夜嗨| 久久av无码| 99色色网| 凹凸 69堂 在线播放| 中国国产精品一区视频| 99re只有精品| 天天日天天干天天色| 日韩人妻操B| 久久久偷拍| 亚洲黄网在哪免费看| 激情综合av| 人人操人人插 - 百度 - 百度| 99久久久久| 亚洲脚交| www.色操逼| 色一区二区三区综合| 密乳AV免费观看| 男女激情中文字幕| 婷婷操视频| 国产四虎在线| 92性色国产午夜福利在线661| 欧美天天拍| 天天综合97| 偷拍欧美综合| 热99这里有精品综合久久| 中文高清一区二区的| 97亚洲中文| 桃色五月天| 国产精品夜夜| 看看小穴| 日本成熟少妇A∨网站| 久久久久久亚洲精品中文字幕人妻| 欧美天天射| 欧美九九99久久精品| 国产强奸乱伦无码视频| 91网18| xxxx网站亚洲精品| 日韩人妻精品| 91蜜臀熟女| 久久精品福利影院| 99re在线视频国产| 91超级碰碰| 超碰97人妻在线| 嗯嗯嗯不要不要免费视频| 亚洲国产丝袜熟女av| 午夜福利区| 日韩中文字幕在线视频观看| 超碰人妻久久| 日产中文字幕2020| 日韩国产成人自拍视频| 日日摸日日弄日日拍| 麻豆天美国美国产| 操逼国产免费| 日本媚薬中文字幕在线| 一区二区三区男女操逼黄色小电影| 亚洲AV秘无码一区..| 天天躁狠狠躁av| 中文字幕五区| 久久毛卡| 亚洲天堂一区| 五月天亚洲网| 九九英色视频| 五月婷婷色| 亚洲av无码国产精品字幕| 91n免费处女| 亚洲中文字幕97久久精品少妇| 成人免费视瓶| 亚州综| 国产成人主播| 韩日精品四区| 爆操无码| 日韩激情电影中文字幕| 久久99久久99精品天美传媒棢·纸:.| 91新在线欧美| 蜜桃午夜视频一区二区| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV | 欧美黄页在线| 国产成人自拍视频在线| 五十路六十路七十路熟婆| 久久97视频| 丝袜美腿校园春色| 亚洲男人的天堂V| 欧美日综合| 久久东京伊人一本到鬼色| 九色黄站| 美女性91| 亚州精品人妻一二三区| 亚洲色丰满少妇高潮| 青青草原狼av| 99精品网| **一级毛片国产| 亚洲97久久精品亚洲| 人妻精品免费一二三区| 色欧美综合| 欧美日韩不卡传媒| 亚洲中文字幕一区| 国产第11页| 9久久美女首页| 草b在线| 91亚洲精品青草| 99性爱视频| a级理论午夜日本| 中文字幕亚洲永久精品| 日本激情免费大片| 一线黄色免费性爱片| 家庭乱伦国产| 乱伦日本中文自拍| av网站免费看| 亚洲欧美综合| 亚洲影院无码在线| 亚洲电影中字一区二区| 青青操网| 91搞逼视频| 日韩免费高清大片在线| 免费国产电影一区二区| 国产美女自拍AV| 久久欲| 国产对白刺激视频| 欧美黑人精品在线播放| 国产精品宅男免费| 被体育老师抱着c到高潮| 国产大学生高潮在线播放| 亚洲熟女av日韩熟女| 中文字幕日本久久| 男人的天堂2010| 99精品丰满人妻无| 黄总AV色图| 亚洲色资源| 日本道日本道中文字幕日本道最新日本道在线观看 | 少妇高潮九九九九| 日韩电影在线观看网址| 日本操逼视频不卡直接放| 国产精品人妻熟女aⅴ| 色婷婷激一区二区三区| 成人在线视频网| 日日干日日| 成人熟女视频一区二区三区| 清清草影| 黄色成年| 人人干人人操人人爱| 日韩色| AV电影在线播放| 九九精品美女高溯喷水| 97操| 美女午夜福利免费视频| 五月丁香激情综合网| 天天干2区3区| 国产吹潮女在线观看| 欧美翘臀视频网站一区二区三区| 国产精品露脸在线观看| 女人高潮大叫一级毛片| 亚洲乱色视频一区、二区在线| 狠色婷婷久久一区二区三区_| 天堂av最新电影网| 国产精品内射婷婷一级二| 加勒比久久综合网高清| 97爱爱爱综合| 国产精品午夜精品| 久久亚洲中文字幕视频| 麻豆国产96在线| 91色五月俺来也| 骚鸭AV| 丰满岳乱妇一区二区三区| 亚洲操操操| 亚洲黄色网址| 亚洲一区二区三区春色| 五月丁香综合啪啪| 青木玲在线不卡| 又粗又长又大国产不卡| 天堂种子在线www网资源| 91天美传媒精品| 一本大道青青| 97欧美性爱| 成人老鸭窝人人在线视频| 97视频免费| 插日本熟女视频| 久草毛片电影怡| 欧美亚洲综合高清在线| 毛片电影一区二区三区| 色拍偷亚洲| 欧美日韩午夜精品一区二区三区 | 大鸡巴久久| 亚洲av淫乱| 嫩草影院永久在线制服丝袜| 国内毛片热久久思思热| 久久精品人体| 美女久久久久久久久久久| 色婷婷九月天天综合 | 国内毛片国产专区二| 97天天操天天干| 亚洲一区二区三区春色| 97网址www| 人人操人人肉久久精品| 狠狠色综合网| 欧美色图电影| 亚州精品一区二区三区香中文字幕在线| 蜜臀一二三区| 天天色综亚洲91污| 日韩人人精品| 秋霞曰韩R级| 国产精品69久久久久久久| 日韩性爱免费视频在线网站| 人妻五十路在线| 欧美少妇性爱网站| 啊啊啊久久久视频| 无码国产精品午夜不卡(| 青青草一本道福利视频| 精品久久人妻成人网| 久久久久久中文| 丁香五月大香蕉| 亚洲精品91| 天天淫人人妻日日色| 人人爱人人乐人人操| 中文字幕片| 园内精品自拍视频在线播放| 欲色啪| 五月婷婷丁香| 97爱爱爱| 国产亚洲色婷婷99精品91| 久久人人爽爽人人爽人人片αV| 美女AV一区二区| 天天天天天天天天天天干美女| 麻豆a'v电影| 9久热| 人人弄人人摸| 秋霞福利网| 久久99网站| 蜜臀99久久精品久久久懂爱| 日韩啪啪啪视频| 国产三级日产三级韩国三级 | 97五月天| 国产又黄又粗的视频| 91 国产丝袜在线播放-百度| 五月婷视频| 99久久精品欧美国产| 欧美91久久久久| 99热这里只有精品8| 国产精品精品系列在线观看| 亚洲资源网| 97五月天| 久久av成人无码免费| 伊人久久婷婷| 亚洲第2页| 久久久久久久久9| 色蜜AV| 国产对白刺激视频| 九t超碰| 色婷婷婷五月天激情四射| 久久无码电影| 欧美亚洲| 欧美人妻熟女在线| 日本精品88888888| 日韩激情啪啪| 亚洲欧美日韩制服另类| 俺也射| 青青草十区九区爱夜| 亚洲综合婷婷| 曰韩精品视频一区二区| 91精品国产一区三一| 经典丝袜一区| 亚洲丝袜天堂| 色五月婷婷在线| 国产精品激情久久久久久久| 午夜精品久久一区二区| 久久天堂网| 热久日综合| 97爱免费插| 六月丁香啪啪啪| 性色av网站| 91精品久久久久五月天精品| 玖草在线视频| 先锋女优在线观看视频| 欧美亚洲韩国视频十五区| 欧美韩国你懂得在线 | 欧美日韩中文亚洲v在线综合| 懂色中文一区二区三区| 91狠狠综合网| 高清孕妇孕交 交| 蜜桃午夜视频一区二区 | 欧美一级在线观看成人| 亚洲三级。日韩三级| 春色综合免费| 国产精品3| 97超碰这里只有精品| 99操| 99www.bibizy香蕉资源国产一区二区三区高清| 亚州色图第三区| 日韩综合色网| 加勒比东京热五月天天堂网| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 男女啪啪啪18禁网站| 91欧美综合| 亚洲资源站| 色欧洲| 99999精品| 91肉丝| 日本αv| 成人AV超碰免费在线| 懂色中文一区二区三区| 亚洲激情在线观看一区| 人妻献身系列第54部| 老司机天天操| 一本一道波多野毛片中文在线| 美国人人操人人操| 玖玖玖玖精品国产剧情| 99日精品欧美国产| 成功精品影院| 天天操天天射青青草| 一区久久久二区| 亚洲熟女乱熟乱熟妇综合网二区| 欧美天堂超碰97| 91n免费处女| 欧美精品不卡一二三四在线91| 四虎免费在线播放| 1240青青草一区二区三区视频天爱| 日韩一卡二卡三卡| 国产精品内射婷婷一级二| 久久中文字幕一区不卡| 久久久免费的精品| 五月色综合| 97干在线看| 天天色踪合| 欲香欲色综合天天伊人| 精品国产一区探花在线观看| 无码一区二区精品视频久久久春药| 天天操夜夜嗨| 日本三级大片| 亚洲精品欧洲精品| 四季av一区二区凹凸精品小说| 天天影视亚洲| 天天插夜夜操| 色综合久久888| 75大香蕉| 91欧美www| 不卡中文字幕aⅴ在线| 亚洲制服欧美另类内射| 亚洲天堂区| 精品无码久久久久| 大香蕉99999| 精品国产91av一区二区三区 | 在线视频97| 精品性爱一二三区| 青娱乐亚洲热| 五月天人妻综合| 强被迫伦姧在线观看无码网站| 破苞ⅩXXX性无码动漫无码| 91蜜臀在线久久久久| 龙兴卡官方查询| 日韩视频中文字幕| 国产自偷自拍一区| 99蜜桃臀亚洲成人在线观看| 久九九九九九九九热| 亚洲 欧美 制服 另类 自拍| 激情五月综合网| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 久久久999国产精品| A级毛片在线看免费| 少妇超碰在线| 日本不卡免费二区| 曰韩精品视频一区二区| 江都AV在线| 97碰碰色| 国产成人无码久久精品| 99精品丰满人妻| 精品欧美老熟女一二区| 啪啪91| 尤物视频偷拍免费| 激情抓乳插进去啪啪啪日韩| 日韩女优中文字幕| 亚洲色图A| 337p大胆噜噜噜噜噜91Av| 欧美在线中M| 亚洲欧洲日本精品中文a∨| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 91九九九馒头| 人人妻人人玩人人澡人人爽| 无码伊人久久大杳蕉中文无码| 密臀视频一区二区三区| 天天看精品动漫视频一区| 亚欧精品久久久久久久久久久| 欧美色图自拍| 一级免费啪啪片| 欧美亚洲高清晰 | 大茄子熟女AV导航| 国产99 中文字幕日韩小视频| 性爱AV天堂| 老司机天天操| 久久久久亚洲一区女同性恋中文字幕| 午夜舔阴达高潮视频免费看| 亚洲免费精品一区| 91久久青青草原精品| 久久久久久夜夜夜夜夜| 人妻丝袜美腿中文字幕| 亚洲精品丝袜| 伊人操你| av一区二区三区四区五区久草臀| 久久久精品91八戒| 久久夜嗨| 色狠狠 - 百度| www被窝色com| 国精精品无码一二三区水多多| 97视频在| a天堂视频| 国产自偷| 日本超碰在线国产一区| 乱伦强奸区日韩| 日本青青草在线| 国产JDAV无码视频在线观看| 日本黄色裸日本黄色裸体| 久操网无码在线| 日韩av色图| AV无码久久久精品| 超碰在线91| 玖玖爱综合| 精品国产无码中文| 99最新日韩偷拍视频| 五月激情综合网| 免费精品国偷自产在线在线 | 五十路熟女,国产欧美精品区一区二区三区| 欧美日本国产日韩激情视频| 夜夜欧美| 91欧美成人色站| 18禁免费视频| 国产97av| 九九英色视频| 亚洲高清无码AAA久久久精品| www.91视频网| 国产大片精久久久久久| 国产A v无码专区| 一卡二卡三卡| 五十路熟女工口| 无码操逼网| 欧美日韩国产精品久久色婷婷| 国产一级αv免费看片| 96久久久久久久| 中文字幕一区 二 区 三 四 五 区日 日 骚| 日韩一级二级三级免费看完整版 | 黄色大片免费在线| 欧洲亚洲人妻无码高清久久三区四区| 欧美专区第一页| 九九精品99| 中文字幕乱码在线观看| 国产精品视频| 日本三级久| 三级激情网站| 啊啊啊啊啊啊在线| 熟女精品一区二区在线观看| 美女刺激久久国产欧美| 18禁的网站在线| 人妻熟女一区二区在线视频| 乱欲性色| 久九九九九九九热| 麻豆国产免费影片| 国内精品嫩模A∨私拍小视频| 呻吟 欧美 日本 中出| 天天综合网91入口| 另类图片五月| 国产欧美日韩在线不卡第一页| 久久久久久久九九九九| 日韩干B| 传媒免费一区二区三区| 天天综合,91综合永久| 国产激情av女片自拍| 久久狠狠色噜噜狠狠狠狠97| 国产97在线播放| 国产精品午夜福利视频| 超碰午夜在线| 激情五月天色播| 欧美自拍偷拍免费观看| 午夜福利av电影在线| 国产欧美在线观看免费观看| 午夜在线播放| 亚洲男人天堂2| 精品一二三区四视频| 97 国产一区| 人妻无码后入| 欧美视频一区二区在线| 看免费的黄片| 日韩熟女操逼| a片 xxxx受爽视频| 精品国产Av无码久久久伦古装 | 99热在线观看| 九九Av| 欧美中出1| 五月丁香社区婷婷日韩欧美精品影院| 另类亚洲一区二区三区| A级在线视频| 亚洲国产成人精品女人久久久| 青草成人免费视频一COm| 久操国产在线| 色噜噜日韩精品| 18+91网站| 天天干人人乐| 欧美+日产+中文| 国产精品96久久久久久| 国产嫩草精品A88AV| 97视频播放| sewuyueav| 国产激情视频一区区三区| 超碰久久精品| 97在线观看免费视频l| 色在线69堂| 老司机福利社视频在线观看| 97超碰影音| 亚洲丝袜二区在线| 天天日夜干| 很很操在线| 国产野战露脸在线播放| 777奇米影视777四色| 无码丰满熟妇一区二区浪潮AV| 淫荡少妇免费| 欧美十八禁在线看| 精品一区二区三区蜜桃臀赵总 | 女上位精品在线| 亚洲中文字幕av| 91丨人妻丨国产丨丝袜| 国产精品福利资源在线尤物| 欧美日本不卡在线| 亚洲熟女人妻中文字幕一区二区 | 久久蜜桃一区二区| 色777999综合| 91欧美www| 久9精品| 一区二区三区高清天码| 一区二区三区视频在线观看免费| 五月丁香| 日韩激情视频| 蜜桃狠狠色伊人亚洲综合| 天天干人人乐| 免费一级a毛片久久久久久鸭绿欲 国产精品亚洲天堂网址 | 极品色| 天堂俺去俺来也www久久婷婷| 成年人性爱日韩| 97WW精品| 超91综合网| 四虎在线播放| 亚洲欧美黄| 一牛影视成人片免费| 天天爱天天韩国日本牛牛牛牛 | 久久午夜鲁丝片| 日韩欧美经典在线观看| 99.色网| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 嗯,啊。舔我逼| 色欧美亚洲| 美国aaaaa一级黄片| 欧美有码激情视频一区二区三区| 欧亚日韩三区| 日韩精品三级片长长久久| 丁香九月婷婷| 亚洲日韩国产欧美综合v| 九九久久久九九| 美女91网址| 国产精品干干干| 污啪啪啪视频| 十八禁电影伊人网| 韩三级a视频在线观看| 欧美激情综合色综合啪啪五月| 粉嫩久久久久| 91精品老女人| 另类天堂| 欧美高潮| 欧美日韩国产三级黄色| 国产精品一区二区在钱播放| 激情婷婷黑人91| 一级二级三级黑人无码| 狠狠 91| 91欧美色| av在线资源| 精品少妇人妻一区二区三区| 天天上日日上日韩精品| 人妻少妇久久久| 综合亚洲网| 日本性爱网址| 欧美熟妇亚洲版| 高精欧美色| 无色无码| 黄色十八禁| 中文字幕日韩人妻视频一区二区三区 | 欧美精品xxxwww| 日本精品免费一区二区三区四区| 国产精品久久久久久久久久久久久久吹 | 国产精品老熟女一区二区| 日本2020一区二区| 乱伦Av网| 国产女人9999| 强奸乱伦Av网| 97国产精品久久久久| 国产日韩欧美亚洲精品95| 淫乱图区 | 97人人干| 99re在线视频这里只有精品| 欧美色性爱| 精吧天堂| 精品黑人一区二区| 在线洲亚线| 日本日皮视频逼| 欧日韩一二三f区| 色婷婷电影网| 91精品老女人| 91 丝袜在线| 一个国产在线综合网站| 亚洲妇色| 国产欧美精选激情视频| 97一本大道亚洲一区| 日韩亚洲国产视频| 97精品一区| 色色色热| 超碰九7免费| 日本不卡三级网在线播放| 99精品国产户外露出| 亚洲色图国产另类| 欧亚性爱啪啪| 97久久超碰国产精品| 亚欧国产无码精品在线| 9 1果冻精品视频| av优播| 欧亚性爱在线视频| 亚洲91综合| 亚洲国产91精品一区二区久久| 嗯嗯啊啊视频一区二区三区| 中文字幕av乱伦| 爱逼综合| 绑缚麻绳人妻寝取完整版| 激情接吻视频久久久久久| 97大色网| 免费在线观看国内色片网站网址| 91黄射| 亚洲色欲一区二区三区| 免费在线黄片视频| 美女91在线| 久草资源在线视频官方总站日韩丝袜美腿| 亚洲性爱乱操x| 亚洲中字慕不卡| 啊啊啊啊视频免费| 日本成人电影资源网| 久久久久熟女| 久久 亚洲 日韩 人妻| 国产久久av| 亚洲毛片基地专区| 亚洲国产青青| 99热色这里只有精品| 性做久久久久久久| 色99999| 久久一本大香蕉| 欧美1727免费观看视频| 色色香蕉| 国产精品com| 四虎影视 亚洲无码| 91视频观看网站| 思思性爱| www.91人妻.com| 麻豆成人影音在线| ...日韩成人一区二区三区字幕| 久久免费老司机精品| 欧美日韩精品一区二区三区高清| 亚洲全色网| 亚州熟妇精品| 性色高清在线| 天天干天天干天天| 美國A片| 无码一区二区精品视频久久久春药 | 亚洲三级。日韩三级| 国产女人9999| 日本精品国产视频| 久久久久久九| 91色夜| 在线视频一区二区传媒| 操逼操逼逼操操逼91| 网友自拍第一页| 色婷婷蜜臀av| 成人三一级一片aaa| 快播电影网日韩新片| 人妻天天爽夜夜爽爽| 啪啪综合网| 天天日天天干天天整| 日韩卡一卡二卡三在线| 亚洲中字幕日本一区二区三区| 男人的天堂com| 亚洲影视高清第一页| 久久一二三级一一一| 无码99| 国产一级黄色片在线观看| 亚洲日韩在线a不卡99精品| 国产在线精品电影观看| 中文字幕91综合| 120分钟婬片免费看| 两性色网| 亚洲 暴爽 AV人人爽日日碰| 欧美女同在线| 99精品高潮| 97色视频在线| 啊啊啊不要啊啊受不了了视频在线| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 97在线观看免费视频l| 国产成人主播| 日本男人插女人的逼黄色| 97一区二压| 欧美91丝袜| 天天色怡春院| 玖玖资源中文字幕制服丝袜| 国产天天看| 国产少妇高潮| x97av| 超碰 欧美| 97chaopengongkai| 欧美一二三| 九九九九热| 操逼无码操逼| 在线播放一级无码视频| 日韩一性一交一A片俄罗斯| 人人摸人人干人人拍97| 欧美亚洲中文字幕|