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

ARTICLE DETAIL

資訊詳情

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

J2ME雷霆戰(zhàn)機(jī)源碼:功能機(jī)飛行射擊主循環(huán)、對(duì)象池與真機(jī)適配

J2ME雷霆戰(zhàn)機(jī)源碼:功能機(jī)飛行射擊主循環(huán)、對(duì)象池與真機(jī)適配 簡(jiǎn)介JAVA ME 經(jīng)典飛行射擊游戲《9688雷霆戰(zhàn)機(jī)》的個(gè)人移植源碼包面向希望從實(shí)戰(zhàn)代碼理解 J2ME/MIDP 移動(dòng)游戲開(kāi)發(fā)的入門(mén)與進(jìn)階學(xué)習(xí)者。內(nèi)容圍繞 MIDlet 主類入口、GameLoop 游戲循環(huán)、飛機(jī)/敵機(jī)/子彈對(duì)象模型、碰撞檢測(cè)與狀態(tài)機(jī)管理展開(kāi)并涉及 Canvas 繪圖、鍵盤(pán)或觸摸事件響應(yīng)、圖像預(yù)加載及音頻播放等環(huán)節(jié)可幫助讀者建立較完整的小型移動(dòng)游戲框架認(rèn)知。壓縮包約 4.4MB文件總數(shù)顯示為 0、類型明細(xì)暫未提供源碼與工具屬性較明確包體以完整工程移植內(nèi)容為主。已有 1139 人學(xué)習(xí)或下載說(shuō)明其在同類 J2ME 學(xué)習(xí)材料中有一定參考熱度。通過(guò)閱讀和調(diào)試這套移植代碼讀者可揣摩幀率控制、內(nèi)存分配與資源緩存等受限設(shè)備上的優(yōu)化思路也能練習(xí)代碼閱讀、問(wèn)題定位和模塊拆解方法適合作為課程設(shè)計(jì)或個(gè)人練手的對(duì)照樣本。1. 一臺(tái)舊功能機(jī)里的飛行射擊這套 J2ME 雷霆戰(zhàn)機(jī)源碼在跑什么手里那臺(tái) 240×320 的舊按鍵機(jī)還能開(kāi)機(jī)但能裝進(jìn)去的游戲已經(jīng)不多了。這份個(gè)人移植的 J2ME 雷霆戰(zhàn)機(jī)源碼做的事就是讓一臺(tái) Java ME 功能機(jī)重新跑起完整的豎版飛行射擊——飛機(jī)左右穿梭、子彈成排往外噴、敵機(jī)一波接一波分?jǐn)?shù)寫(xiě)進(jìn) RMS關(guān)機(jī)再開(kāi)還在。整套工程不依賴任何第三方游戲引擎全靠 MIDP 自帶的 Canvas、GameAPI、RMS 和 Media API 拼起來(lái)用老式的 J2ME 開(kāi)發(fā)工具包WTK導(dǎo)入就能編出 JAR。它適合三類人手里有舊機(jī)器想復(fù)刻點(diǎn)東西的、想看清 J2ME 游戲主循環(huán)到底怎么寫(xiě)的、以及接手了一個(gè)老 JAR 要做二次開(kāi)發(fā)的。代碼量不大但結(jié)構(gòu)完整從 MIDlet 生命周期到子彈對(duì)象池回收都留著清晰的切口改起來(lái)不用翻半天。2. 工程骨架與目錄結(jié)構(gòu)MIDlet 入口、Canvas 主循環(huán)和資源怎么擺先看骨架。J2ME 項(xiàng)目和普通 Java 工程最大的差別在于它必須有一個(gè)明確的「應(yīng)用入口」和一份聲明式的描述文件打包器靠這兩樣?xùn)|西才能把一堆 class 變成一個(gè)能裝進(jìn)手機(jī)的 JAR。2.1 一份能直接導(dǎo)入 WTK 的目錄長(zhǎng)什么樣這套源碼的目錄是標(biāo)準(zhǔn)的老式 J2ME 布局沒(méi)有 Maven 也沒(méi)有 Gradle純靠 IDE 的工程描述和 Ant 腳本src/ com/game/midlet/GameMIDlet.java MIDlet 入口管生命周期 com/game/core/GameCanvas.java 主循環(huán)、按鍵、繪制 com/game/core/Entity.java 實(shí)體基類坐標(biāo)/速度/半徑 com/game/core/BulletPool.java 子彈對(duì)象池 com/game/core/EnemyManager.java 敵機(jī)波次調(diào)度 com/game/core/ScoreStore.java RMS 最高分 com/game/core/Res.java 圖片資源統(tǒng)一加載與緩存 res/ player.png enemy.png bullet.png bg.png bgm.mid shoot.wav META-INF/MANIFEST.MF Game.jad build.xmlsrc下面按職責(zé)分了 midlet 和 core 兩個(gè)包這個(gè)分層對(duì) J2ME 來(lái)說(shuō)已經(jīng)夠用了。res里的圖片必須是 PNG這是 MIDP 規(guī)范里唯一被強(qiáng)制支持的位圖格式別指望塞 JPG 進(jìn)去。Game.jad是 Java 應(yīng)用描述文件很多機(jī)型在安裝時(shí)會(huì)先讀 JAD 再?zèng)Q定要不要下載 JAR里面的字段和 MANIFEST 必須對(duì)得上。2.2 MIDlet 生命周期startApp 里只做一件事入口類承擔(dān)的工作比想象中少。J2ME 的 MIDlet 有startApp、pauseApp、destroyApp三個(gè)狀態(tài)回調(diào)最容易踩的坑是把資源加載和線程啟動(dòng)都堆在startApp里結(jié)果用戶按了掛機(jī)鍵再切回來(lái)第二份線程就起來(lái)了畫(huà)面越跑越快。import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import javax.microedition.lcdui.Display; public class GameMIDlet extends MIDlet { private GameCanvas canvas; private Display display; protected void startApp() throws MIDletStateChangeException { if (canvas null) { display Display.getDisplay(this); Res.loadAll(); // 素材只在這里加載一次全部進(jìn)靜態(tài)緩存 canvas new GameCanvas(this); canvas.startLoop(); // 主循環(huán)線程跟著 Canvas 走 } display.setCurrent(canvas); // 切回來(lái)只是重新設(shè)為當(dāng)前屏幕 } protected void pauseApp() { if (canvas ! null) canvas.pauseLoop(); // 掛機(jī)就停線程省電 } protected void destroyApp(boolean unconditional) { if (canvas ! null) canvas.stopLoop(); } public void exit() { // 游戲內(nèi)菜單調(diào)用 destroyApp(true); notifyDestroyed(); } }startApp里用canvas null做了一次性判斷這是整套代碼里最值錢(qián)的一行。J2ME 設(shè)備在來(lái)電、切換后臺(tái)、開(kāi)蓋合蓋時(shí)都會(huì)反復(fù)觸發(fā)startApp和pauseApp如果不做這個(gè)判斷每次切回來(lái)就是一個(gè)新 Canvas 加一個(gè)新線程內(nèi)存和幀率一起崩。pauseLoop只是把running標(biāo)志置 false 并讓線程自然退出循環(huán)不調(diào)Thread.stop()——那個(gè)方法在 CLDC 上行為不確定屬于血淚經(jīng)驗(yàn)。參數(shù)上notifyDestroyed()是告訴運(yùn)行環(huán)境「我自己要退了」必須主動(dòng)調(diào)否則部分機(jī)型會(huì)認(rèn)為應(yīng)用異常退出并彈提示。Res.loadAll()放在 Canvas 創(chuàng)建之前保證第一幀繪制時(shí)所有Image都已經(jīng)就位避免第一幀出現(xiàn)空指針。2.3 JAD 與 MANIFEST 里的關(guān)鍵字段JAR 裝不上手機(jī)八成是這兩個(gè)文件的問(wèn)題。核心字段就這幾個(gè)MIDlet-Name: ThunderShooter MIDlet-Version: 1.0.0 MIDlet-Vendor: Personal MIDlet-1: Thunder, /player.png, com.game.midlet.GameMIDlet MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.0MIDlet-1的格式是「顯示名, 圖標(biāo)路徑, 入口類全名」三段用英文逗號(hào)加空格分隔少一個(gè)空格某些機(jī)型就解析失敗。MicroEdition-Configuration和MicroEdition-Profile直接決定了這臺(tái)機(jī)器愿不愿意裝你的包寫(xiě) CLDC-1.1 意味著放棄 CLDC-1.0 的老機(jī)器寫(xiě) CLDC-1.0 則用不了浮點(diǎn)和部分集合 API。這套源碼選了 CLDC-1.1 MIDP-2.0是個(gè)務(wù)實(shí)的取舍——覆蓋不了最早那批單色機(jī)但換來(lái)了Image.createRGBImage和Manager這些必備能力。# 老式 WTK 的標(biāo)準(zhǔn)打包流程三步缺一不可 javac -bootclasspath $WTK/lib/cldcapi11.jar:$WTK/lib/midpapi20.jar \ -d classes $(find src -name *.java) $WTK/bin/preverify -classpath $WTK/lib/cldcapi11.jar:$WTK/lib/midpapi20.jar -d classes classes jar cfm ThunderShooter.jar META-INF/MANIFEST.MF -C classes . -C res .preverify這一步是 J2ME 獨(dú)有的它在每個(gè) class 里插入棧映射信息供設(shè)備上的 KVM 做字節(jié)碼校驗(yàn)。跳過(guò)它模擬器可能照跑真機(jī)上直接報(bào)校驗(yàn)錯(cuò)誤。構(gòu)建腳本里把它寫(xiě)成 Ant 的一個(gè)exectarget 就行別手動(dòng)敲命令太長(zhǎng)容易漏 classpath。3. 核心玩法拆解從主循環(huán)到子彈與敵機(jī)的碰撞判定骨架搭好之后真正決定手感的是主循環(huán)和實(shí)體管理。這部分代碼不多但每一處都能直接換成「卡不卡」和「判定準(zhǔn)不準(zhǔn)」。3.1 幀循環(huán)里的 update 與 draw 分離J2ME 沒(méi)有游戲引擎的requestAnimationFrame最穩(wěn)的做法是自建線程加固定步長(zhǎng)。這套代碼把邏輯更新和繪制徹底分開(kāi)update只改數(shù)據(jù)paint只讀數(shù)據(jù)中間不互相調(diào)用。public class GameCanvas extends Canvas implements Runnable { private static final int FRAME_MS 40; // 25 FPS功能機(jī)的舒適區(qū) private volatile boolean running false; private Thread loopThread; private long lastTick; public void startLoop() { if (running) return; running true; lastTick System.currentTimeMillis(); loopThread new Thread(this); loopThread.start(); } public void pauseLoop() { running false; } public void run() { while (running) { long now System.currentTimeMillis(); int delta (int) (now - lastTick); if (delta FRAME_MS) { try { Thread.sleep(FRAME_MS - delta); } catch (InterruptedException e) { } continue; } lastTick now; update(delta); repaint(); serviceRepaints(); // 立刻刷別讓重繪消息在事件隊(duì)列里排隊(duì) } } }FRAME_MS 40對(duì)應(yīng) 25 幀這是老機(jī)器的甜點(diǎn)值。往 30 幀調(diào)33ms不是不行但繪制一幀如果超時(shí)System.currentTimeMillis()的差值會(huì)越滾越大表現(xiàn)為「走兩步卡一下」。差值累積的處理方式是不補(bǔ)幀直接把lastTick重置到當(dāng)前時(shí)間寧可掉幀也不讓邏輯跳步。volatile修飾running是因?yàn)檫@個(gè)字段跨線程讀寫(xiě)沒(méi)有它暫停指令在部分虛擬機(jī)上不會(huì)被主循環(huán)看到。repaint()加serviceRepaints()連用是 Canvas 的經(jīng)典寫(xiě)法前者只是把重繪請(qǐng)求丟進(jìn)事件隊(duì)列后者強(qiáng)制同步執(zhí)行到paint完成。少寫(xiě)后面那一句畫(huà)面會(huì)滯后一到兩幀彈幕密集時(shí)感覺(jué)特別明顯。3.2 實(shí)體與對(duì)象池別讓內(nèi)存在彈幕里抖射擊游戲最怕的不是算力不夠是 GC 在關(guān)鍵時(shí)刻來(lái)一下。一局下來(lái)幾千發(fā)子彈如果每發(fā)都new Bullet()CLDC 上那個(gè)小堆幾秒鐘就撐不住。這套代碼的解法是固定容量對(duì)象池一次分配永不擴(kuò)容。public class BulletPool { private final Bullet[] pool; private int liveCount; // [0, liveCount) 是活躍子彈 public BulletPool(int capacity) { pool new Bullet[capacity]; for (int i 0; i capacity; i) { pool[i] new Bullet(); // 啟動(dòng)時(shí)一次性 new 完 } } public void spawn(int x, int y, int vx, int vy, int dmg) { if (liveCount pool.length) return; // 池滿直接丟棄絕不擴(kuò)容 Bullet b pool[liveCount]; b.reset(x, y, vx, vy, dmg); } public void update(int delta) { for (int i liveCount - 1; i 0; i--) { Bullet b pool[i]; b.x b.vx * delta / 1000; b.y b.vy * delta / 1000; if (b.y -16 || b.y 400 || b.dead) { pool[i] pool[--liveCount]; // 尾元素覆蓋O(1) 回收 pool[liveCount] b; } } } }倒序遍歷是這份回收邏輯能成立的前提。pool[i] pool[--liveCount]把最后一個(gè)活躍子彈挪到當(dāng)前位置然后liveCount減一被回收的b則回到數(shù)組尾部等待復(fù)用。因?yàn)槭堑剐虮慌策^(guò)來(lái)的那個(gè)元素索引一定小于當(dāng)前的i下一輪不會(huì)重復(fù)處理。如果寫(xiě)成正序挪過(guò)來(lái)的元素會(huì)被跳過(guò)子彈就「穿?!癸w過(guò)去不消失。capacity的取值我一般按「最壞情況下屏幕同屏子彈數(shù)」的 1.5 倍來(lái)定這套代碼給的是 64。滿池時(shí)丟棄而不是擴(kuò)容這個(gè)設(shè)計(jì)是刻意的——寧可少一發(fā)子彈也不能在戰(zhàn)斗中觸發(fā)一次數(shù)組復(fù)制。敵機(jī)那邊同理EnemyManager里也是固定數(shù)組加波次調(diào)度不用Vector。3.3 碰撞判定圓形距離平方比矩形更貼合彈幕判定用矩形包圍盒是最省事的但豎版射擊游戲里機(jī)身窄、彈幕斜飛矩形框會(huì)在視覺(jué)上明明沒(méi)碰到的時(shí)候判定命中玩家感受很差。這套代碼用的是圓形判定只比較距離的平方省掉開(kāi)方。public class Entity { public int x, y; // 左上角坐標(biāo) public int halfW, halfH; // 半寬半高用于繪制 public int cx, cy; // 判定圓心一般略小于視覺(jué)中心 public int radius; // 判定半徑 public void syncCenter() { cx x halfW; cy y halfH; } } public class Collision { public static boolean overlap(Entity a, Entity b) { int dx a.cx - b.cx; int dy a.cy - b.cy; int r a.radius b.radius; return dx * dx dy * dy r * r; // 比較平方不做開(kāi)方 } }radius通常設(shè)成視覺(jué)尺寸的 0.6 到 0.7 倍這叫「寬容判定」玩家被擦彈擦過(guò)去不算死手感會(huì)好很多。自機(jī)受傷判定要比敵機(jī)更小一圈因?yàn)樽詸C(jī)是玩家唯一在意的對(duì)象判定越寬容越舒服而敵機(jī)被打中的判定可以放大到 1.0讓射擊更有反饋感。syncCenter必須在坐標(biāo)變化后調(diào)用或者干脆把cx/cy算成x halfW的 getter避免忘了同步導(dǎo)致判定錯(cuò)位——這是個(gè)特別隱蔽的 bug畫(huà)面上全都對(duì)就是打不中。每幀的檢測(cè)順序是自機(jī)子彈 × 敵機(jī) → 敵機(jī)子彈 × 自機(jī) → 敵機(jī) × 自機(jī)。前兩組是 O(m×n) 的雙層循環(huán)靠數(shù)量控制子彈池 64、敵機(jī)池 24保證在 CLDC 上也不卡。想再省一點(diǎn)可以按屏幕縱向分三段只跟同一段內(nèi)的對(duì)象比實(shí)測(cè)能砍掉約六成計(jì)算量。3.4 敵機(jī)波次與難度曲線波次調(diào)度沒(méi)寫(xiě)成狀態(tài)機(jī)用的是一個(gè)很土但好調(diào)的結(jié)構(gòu)數(shù)據(jù)表加游標(biāo)。// 每一波起始時(shí)刻(ms)、敵機(jī)數(shù)量、生成間隔(ms)、橫向起始位置、移動(dòng)模式 private static final int[][] WAVES { { 0, 5, 800, 40, 0 }, // 模式0直線下落 { 6000, 8, 600, 100, 1 }, // 模式1正弦橫移 {13000, 12, 400, 20, 2 }, // 模式2斜向俯沖 {21000, 16, 300, 60, 3 }, // 模式3追蹤自機(jī) };把難度寫(xiě)成表的好處是調(diào)平衡的時(shí)候不用改代碼邏輯。想讓它更兇把間隔從 800 調(diào)到 500、數(shù)量加兩架重新編譯就行。游標(biāo)推進(jìn)的邏輯在EnemyManager.update里當(dāng)前波次的生成數(shù)量耗盡且場(chǎng)上敵機(jī)清空后才推下一波中間留一段空窗給玩家喘氣。這個(gè)「清空再推進(jìn)」的條件如果不加波次會(huì)疊在一起第三關(guān)就能直接勸退。4. 屏幕與按鍵適配跨機(jī)型移植最容易翻車(chē)的一層同一份 JAR在 128×160 的機(jī)器上正常在 240×320 的機(jī)器上飛出屏幕在 176×208 的機(jī)器上按鍵全亂——這是移植 J2ME 游戲最典型的一天。適配層不做前面寫(xiě)得再好也白搭。4.1 分辨率適配邏輯坐標(biāo)系加一次性重采樣MIDP 的drawImage不支持縮放這是硬約束。想畫(huà)一張能適應(yīng)多種屏幕的圖只有兩條路運(yùn)行時(shí)自己重采樣或者按固定邏輯分辨率畫(huà)、四周留黑邊。這套代碼兩條都用了。先看繪制時(shí)的坐標(biāo)系換算private static final int LOGIC_W 240; private static final int LOGIC_H 320; protected void paint(Graphics g) { int sw getWidth(); int sh getHeight(); // 以邏輯分辨率為基準(zhǔn)計(jì)算居中偏移不做非整數(shù)縮放 int ox (sw - LOGIC_W) / 2; int oy (sh - LOGIC_H) / 2; g.setColor(0x000010); g.fillRect(0, 0, sw, sh); // 先鋪滿底色防止邊緣露出臟像素 g.translate(ox, oy); // 之后所有繪制都用邏輯坐標(biāo) g.setClip(0, 0, LOGIC_W, LOGIC_H); // 裁剪掉超出的部分別畫(huà)到屏幕外 drawBg(g); enemies.draw(g); bullets.draw(g); player.draw(g); drawHud(g); g.translate(-ox, -oy); // 還原給后續(xù)可能的全屏繪制讓路 }g.translate加setClip這個(gè)組合是整段的核心。邏輯坐標(biāo)統(tǒng)一按 240×320 算屏幕比它大的時(shí)候居中兩邊鋪深色底比它小的時(shí)候裁剪掉邊緣保證玩家不會(huì)被看不見(jiàn)的敵機(jī)打死。translate必須成對(duì)還原否則 HUD 和后續(xù)的全屏效果會(huì)畫(huà)到偏移位置上去這個(gè) bug 排查起來(lái)特別費(fèi)勁因?yàn)檫壿媽拥臄?shù)據(jù)全是對(duì)的。屏幕比邏輯分辨率大的時(shí)候如果就這么留黑邊會(huì)很丑。更徹底的做法是啟動(dòng)時(shí)把整套素材按比例重采樣一次// 啟動(dòng)時(shí)按目標(biāo)尺寸把素材重采樣一遍運(yùn)行時(shí)零開(kāi)銷 public static Image scaleImage(Image src, int dstW, int dstH) { int sw src.getWidth(); int sh src.getHeight(); int[] srcPx new int[sw * sh]; src.getRGB(srcPx, 0, sw, 0, 0, sw, sh); // 需要 MIDP 2.0 int[] dstPx new int[dstW * dstH]; for (int y 0; y dstH; y) { int sy y * sh / dstH; for (int x 0; x dstW; x) { dstPx[y * dstW x] srcPx[sy * sw x * sw / dstW]; // 最近鄰插值 } } return Image.createRGBImage(dstPx, dstW, dstH, true); }最近鄰插值出來(lái)的圖會(huì)有鋸齒但 J2ME 上沒(méi)得選——雙線性要浮點(diǎn)運(yùn)算CLDC 1.0 直接不支持。createRGBImage的第四個(gè)參數(shù)processAlpha傳true才會(huì)保留透明通道傳false會(huì)得到一張黑底圖這個(gè)參數(shù)值錢(qián)。重采樣只發(fā)生在啟動(dòng)時(shí)算力代價(jià)可以接受千萬(wàn)別放進(jìn)paint里一幀幾次重采樣能讓幀率掉到個(gè)位數(shù)。4.2 按鍵映射getGameAction 的返回值不一定靠得住Canvas.getGameAction(keyCode)理論上把物理鍵翻譯成UP/DOWN/LEFT/RIGHT/FIRE這些抽象動(dòng)作實(shí)際上部分機(jī)型對(duì)方向鍵返回 0還有一批機(jī)器把方向鍵直接映射成數(shù)字鍵 2/4/6/8。只寫(xiě) switch 不寫(xiě)兜底用戶會(huì)發(fā)現(xiàn)飛機(jī)紋絲不動(dòng)。protected void keyPressed(int keyCode) { int action getGameAction(keyCode); switch (action) { case Canvas.UP: player.moveUp(); break; case Canvas.DOWN: player.moveDown(); break; case Canvas.LEFT: player.moveLeft(); break; case Canvas.RIGHT: player.moveRight(); break; case Canvas.FIRE: player.fire(); break; default: // 兜底部分機(jī)型方向鍵不映射游戲動(dòng)作只報(bào)數(shù)字鍵 if (keyCode Canvas.KEY_NUM2) player.moveUp(); else if (keyCode Canvas.KEY_NUM8) player.moveDown(); else if (keyCode Canvas.KEY_NUM4) player.moveLeft(); else if (keyCode Canvas.KEY_NUM6) player.moveRight(); else if (keyCode Canvas.KEY_NUM5) player.fire(); break; } }這套兜底覆蓋了絕大多數(shù)功能機(jī)的鍵位習(xí)慣。還有個(gè)更細(xì)的問(wèn)題某些機(jī)器的左軟鍵對(duì)應(yīng)-6、右軟鍵對(duì)應(yīng)-7取值是負(fù)數(shù)用getGameAction同樣返回 0需要單獨(dú)判斷。別指望一次寫(xiě)完全部機(jī)型最實(shí)際的做法是在游戲里塞一個(gè)隱藏的「按鍵調(diào)試」界面把keyCode和getGameAction的返回值直接打在屏幕上裝機(jī)實(shí)測(cè)時(shí)看一眼就知道該補(bǔ)哪一行。4.3 觸屏與鍵盤(pán)雙支持MIDP 2.0 之后不少機(jī)器有了觸摸屏。這套代碼同時(shí)實(shí)現(xiàn)了pointerPressed但它不直接和鍵盤(pán)邏輯混在一起而是把觸摸坐標(biāo)換算成邏輯坐標(biāo)后交給同一套移動(dòng)接口protected void pointerPressed(int px, int py) { int lx px - offsetX; // 屏幕坐標(biāo) - 邏輯坐標(biāo) int ly py - offsetY; if (isInsideFireButton(lx, ly)) { player.fire(); } else { player.moveTo(lx, ly - 20); // 手指上方留 20 像素別被手指擋住 } }py - 20這個(gè)偏移量是上手之后改的手指落點(diǎn)和玩家以為的位置有偏差直接moveTo會(huì)讓飛機(jī)貼著手指下沿。操作方式上鍵盤(pán)機(jī)是「按住方向鍵持續(xù)移動(dòng)」觸屏是「拖哪走哪」兩套邏輯共用player.moveTo和player.moveBy兩個(gè)方法互不干擾。5. 避坑與排查真機(jī)上那五個(gè)最想砸手機(jī)的瞬間模擬器跑通只是開(kāi)始真機(jī)才是驗(yàn)收?qǐng)?。以下五條都是這套源碼在移植過(guò)程中實(shí)際遇到過(guò)的問(wèn)題按「現(xiàn)象、原因、解決」的順序?qū)懹龅酵钪苯映?.1 白屏與花屏圖片和屏幕尺寸的坑現(xiàn)象一模擬器正常裝到真機(jī)啟動(dòng)后一片白幾秒后自動(dòng)退出。原因基本鎖定在圖片資源上——導(dǎo)出的 PNG 帶了 32 位 alpha 通道或者用了真機(jī)解碼器不認(rèn)的非索引色格式。CLDC 上的 PNG 解碼器實(shí)現(xiàn)差異很大越老的機(jī)器越挑。解決辦法是把所有素材重新導(dǎo)出成 8 位索引色 PNG透明部分用純色鍵比如 0xFF00FF填充繪制時(shí)用drawRegion配合色鍵摳掉同時(shí)把單張圖控制在 128×128 以內(nèi)部分機(jī)型對(duì)單圖尺寸有硬上限。現(xiàn)象二畫(huà)面能出來(lái)但整體偏到一邊右邊一條黑。這是getWidth()返回的寬度和實(shí)際可視寬度不一致導(dǎo)致的某些滑蓋機(jī)在合蓋狀態(tài)下報(bào)的是內(nèi)屏寬度。解決方式是在sizeChanged(int w, int h)回調(diào)里重新計(jì)算偏移量而不是在構(gòu)造函數(shù)里算一次就存成常量。這個(gè)回調(diào)在屏幕旋轉(zhuǎn)和開(kāi)合蓋時(shí)都會(huì)觸發(fā)是唯一可靠的時(shí)機(jī)。5.2 崩潰與內(nèi)存CLDC 的 API 紅線現(xiàn)象三玩到第三關(guān)黑屏退出日志里是OutOfMemoryError。兩個(gè)來(lái)源一是每幀new實(shí)體二是同一張圖被反復(fù)Image.createImage加載。前者的解法是第 3 章講的對(duì)象池后者更隱蔽EnemyManager里每種敵機(jī)如果各自加載一次貼圖同屏五架就是五份位圖在堆里。正確做法是建立Res類在startApp里把所有Image一次性 load 進(jìn)靜態(tài)字段之后全局共用同一份引用?,F(xiàn)象四編譯通過(guò)真機(jī)一運(yùn)行就NoSuchMethodError。說(shuō)明用了 CLDC 1.0 里沒(méi)有的 API但編譯時(shí)的 classpath 指向了 CLDC 1.1 的庫(kù)。常見(jiàn)嫌疑人是Float.valueOf、String.format、java.util.regex和Collections.sort的部分重載。查法很簡(jiǎn)單把工程配置里的 Configuration 改成 CLDC-1.0 再完整編譯一次編譯不過(guò)的地方就是雷區(qū)。真要用浮點(diǎn)就自己用整數(shù)放大一百倍來(lái)模擬別賭目標(biāo)機(jī)型支持。5.3 交互與存檔按鍵、RMS、音效三連坑現(xiàn)象五方向鍵完全沒(méi)反應(yīng)但確認(rèn)鍵能開(kāi)火。就是 4.2 節(jié)講的getGameAction返回 0加上數(shù)字鍵兜底即可。順帶一提有些機(jī)器在keyPressed里收到的是重復(fù)事件按住方向鍵會(huì)以極快頻率觸發(fā)導(dǎo)致飛機(jī)瞬移到邊界——加一個(gè)keyReleased里清標(biāo)志、keyPressed里判重的簡(jiǎn)單鎖就能壓住?,F(xiàn)象六最高分重啟后歸零。RecordStore寫(xiě)完沒(méi)關(guān)是頭號(hào)原因部分機(jī)型的數(shù)據(jù)要等closeRecordStore()才落盤(pán)代碼里必須在finally里關(guān)。第二個(gè)原因是 RMS 的作用域跟 MIDlet 套件綁定改了MIDlet-Name或者換了簽名之前存的數(shù)據(jù)就等于沒(méi)了——所以名字這東西定了就別動(dòng)。穩(wěn)妥的寫(xiě)法是加載失敗一律返回 0存檔失敗直接吞掉異常絕對(duì)不能讓存檔問(wèn)題把整個(gè)游戲拖崩。音效是同類問(wèn)題里的第三顆雷。Manager.createPlayer在缺少 MMAPI 支持的機(jī)器上會(huì)拋異常甚至直接NoClassDefFoundError。整個(gè)播放邏輯必須包在 try-catch 里并且先用Manager.isTypeSupported(audio/midi)探一下不支持就靜音降級(jí)游戲照跑。6. 二次開(kāi)發(fā)改造換一套美術(shù)、加一種武器之后怎么驗(yàn)證改造這套源碼最省力的順序是「先換皮、再改數(shù)值、最后加機(jī)制」因?yàn)槿叩尿?yàn)證成本是遞增的。換皮只需要看不崩加機(jī)制要玩得爽中間隔著幾十次真機(jī)重啟。6.1 換皮改動(dòng)面其實(shí)只有三處美術(shù)替換不要?jiǎng)哟a邏輯只碰三個(gè)地方res目錄下的 PNG 文件、Res.java里的尺寸常量、Entity子類里的halfW/halfH/radius。自機(jī)的機(jī)身窄radius給 6 到 8 就夠敵機(jī)體積大可以給到 14。改完一定要把BulletPool的容量重新算一遍——新美術(shù)如果讓子彈變大同屏能容納的數(shù)量就變了池子還是 64 的話會(huì)在密集彈幕時(shí)開(kāi)始丟子彈表現(xiàn)為「明明在射但打不中」。6.2 加一種武器從對(duì)象池容量到渲染順序加激光武器的最小改動(dòng)路徑是這樣的在BulletPool外面再開(kāi)一個(gè)LaserPool容量小一點(diǎn)8 條足夠因?yàn)樗鼈兣卸ù?、存在時(shí)間長(zhǎng)。渲染順序上激光要畫(huà)在普通子彈下面、背景上面否則會(huì)蓋住自機(jī)。數(shù)值上激光給「持續(xù)傷害」而不是「單次傷害」就需要在Entity上加一個(gè)dmgPerTick字段配合update(delta)按毫秒累加避免高幀率時(shí)傷害翻倍。做完這一步別忘了難度曲線也得跟著調(diào)——加了強(qiáng)力武器第四波的敵機(jī)數(shù)量不漲游戲就變成割草了。6.3 真機(jī)驗(yàn)證清單改完別急著打包按這張表過(guò)一遍能省掉大量返工驗(yàn)證項(xiàng)怎么驗(yàn)不通過(guò)先看哪里冷啟動(dòng)裝完直接開(kāi)不看任何界面Res.loadAll是否在 Canvas 之前掛機(jī)切回按掛機(jī)鍵 30 秒再切回startApp的canvas null判斷滿屏彈幕打到第三波觀察是否掉幀BulletPool容量與FRAME_MS判定手感貼臉躲彈看是否被誤判radius取值與syncCenter調(diào)用存檔打出最高分退出重進(jìn)closeRecordStore是否在 finally靜音降級(jí)在不支持 MIDI 的機(jī)器上跑音效 try-catch 是否完整這套流程我從第二個(gè)移植項(xiàng)目開(kāi)始就沒(méi)斷過(guò)。早期吃過(guò)虧模擬器上一切正常真機(jī)裝上去第一波敵人還沒(méi)出完就白屏了回頭查了整整兩天才發(fā)現(xiàn)是某張圖的 alpha 通道問(wèn)題。從那以后我每次改完一個(gè)副本都強(qiáng)制在真機(jī)上把所有波次跑滿一輪再打包不管改的是一行數(shù)值還是一次換膚。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久欧美按摩999| 欧美综合色图网| 97国产精品一区| 亚洲欧美综合区自拍另类 | 99超碰色| 午夜噜噜噜| 操逼逼福利视频| 精精夜夜| 九热中文字幕| 97精品国产97久久久久久免费| 日韩专区久久久| 秋霞一级鲁丝片A片| 天天操天天射青青草| 校园春色 亚洲| 黑人猛交| 欧美日韩高潮喷水91| 97久久综合网| 色牛牛AV| 狠狠做深爱婷婷久久二区| 精品人妻一区二区三区在| 国内外色色色色色成人视频| 人妻熟女一区二区在线视频| 免费久久精品麻豆一区二区av| 999综合色| 熟妇的味道HD中文字幕| 一区二区三区四区久久视1| 一中国女人毛片水真多| 夜夜人妻爽| 一本色道久久天天射天天干| 欧美激情久| 亚洲97成人在线观看| 国产乱婷婷精品二区三区| 亚洲成人ab| 999在线电影香蕉| 99re99在线视频| 婷婷久热| 色哟哟av| 久久久久久亚洲精品不卡人乳 | 亚洲无码精品AV久久久| 日韩不卡网操逼中文字幕日韩| 91精品久久久久五月天精品| 久久久婷| 欧美性爱91| 日本一久是| 日韩av在线播放不卡| 老鸭窝成人| 亚洲夜夜欢无码一区二区| 国产嫩草精品A88AV| 国产精品亚洲一区二区三区四区| 青草一区二区| 少妇同性| 人妻少妇被猛烈进入中| 丰满熟妇大乳做爰| 欧美性爱在线无码| 九九九九九九视频免费| 欧美综合加勒比在线| 69少妇一区二区| 97AV在线免费观看| 天天综合在线4| 欧美成人一级麻豆| 91狠狠狠| 第四色亚洲色图| 手机看片日韩人妻| 亚洲色图图片| 成人在线午夜视频一区| 亚洲精品一区中文字幕乱码| 亚洲av国产av综合av卡| 欧美色图99| 大香蕉九九| 97超碰人人模人人拍人人| 亚州成人a∨| 午夜一区二区三区国产| 久久久青青草| 1二区9| 思思热免费在线视频| 久久久久女教师免费一区 | 秋霞 色色| 九九九九九精品十六| 97人人模人人爽人人| 久久久精品网站| 天天射夜夜| 伊人AAA| 国产精品视频91久久| 99爱爱| 98一区二区精品| 在线视频 亚洲精品| 久久久久久免费电影| www久久久| 欧美在线永久天堂| 熟妇国产免费一区| 九九热九九热| 成人a大片在线观看| 久久精品导航| 97爱b| α√在线| 亚洲成aⅴ人片不卡无码| 亚洲脚交| 97精品国产精品免费观看| 亚洲啪啪视频一区二区| av爱爱爱| 九热久| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | AV中文在线可看| 国产无马视频| 欧美日韩国产另类综合| 国产激情视频一区区三区| 九草在线大香蕉| 久久久草成人网站久久久草成人久久久草久久久 | 欧美嗯啊……在线观看视频免费| 在线天堂资源亚洲| 91丝袜熟女| 国产传媒午夜理伦精品| 亚洲和欧美裸体美女双飞视频| 2019精品国产无码成人| 欧美综合色图片| 久久久98网站免费视频| 色综合国产在线观看| 超碰97资源中文字幕| 伊人丁香五月婷婷| 大香蕉99re| 欧美大码在线视频| 久久免费99精品久久久久久| 天天操天天日天天干| 一线黄色免费性爱片| 欧美亚洲厕所精品偷拍91| 色情乱伦AV| 国产自产22区| 亚洲天堂电影精品一区| 欧美黄色片在线播放| 精品9999| 亚洲男人天堂2012| 精品久久久久久中文字幕三区| 色哟哟av| 黄色二级片网站| 91熟女在线| 亚洲综合小视频小说在线观看| 手机在线视频国内精品| 秋霞 色色| 不卡码视频| 成人免费不卡在线视频| 国产后入| 精品妇操一区二区三区| 亚洲国产剧情少妇激情| 精品国产一级久久| 无遮挡男女激烈动态图| 大干人妻| 大香蕉99热| 囯产乱伦一区二区三女 | 午夜经典| 91蜜臀在线久久久久| 操逼国产免费| 91丝袜在线观看| 伊人网在线观看| 韩国一级婬片A片AAAAA| 激情 欧美 亚洲 小说| 欧美丝袜亚洲| 欧美夜色| 97操97色| 任你艹| 男女激烈网站最新| 2019天天干| 熟妇高潮二区三区| 精品少妇一区二区三区免费观看| 国产欧美亚洲精品a第2页| 激情欧美97| 亚洲91色在线| 啊啊啊好爽快点啊啊啊嗯嗯| 婷婷九月色| 欧 美 自 拍 偷 拍| 亚州欧美在线| 91亚洲丝袜| 激情第四色| 亚洲五码一区二区三区| 日本国产亚洲一区在线观看| 天天干夜夜鈤| 色偷偷综合91久久噜噜| 色综和网| 九九热在线精品视频| 日本在线不卡123| 亚洲精品毛片在线观看| A级在线视频| 中文字幕福利视频一区二区三区在线观看| 色 亚洲 91| 九九久久久久久爱| 欧美一级三级| a久久| 欧美精品自慰系列寂寞少妇 | 99999国产精品| 999热日韩精品| 日韩人妻精品中文字幕| 欧美激情片一区二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 欧美人妻制服| 欧美三级偷拍| 高清无码91| 夜夜爽夜夜摸夜夜操免费视频| 日韩传媒在线| 色综合潮| 性色高清在线| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日韩乱伦影音先锋| 国产精品一区二区手机看片| 日韩免费中文字幕视频| 日本成人免费一区二区三区 | 国产粉嫩出水在线播放| 亚洲av无线观看| 久操网视频| 精品久久久久久无码| 欧美色www亚洲国产阿娇要播| 亚洲性天堂| 天天日天天干少妇日| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 激情五月天婷婷| 免费黄色片子| 欧美亚洲综合色| 亚洲图片欧美91N| 中文字幕一区日韩精| 人干人人人操人人摸| 久久毛卡| 色播综合| 国产丝袜美女诱惑| 自拍盗摄一区| 欧洲精品久久| 日韩精品一区,二区 九九...老司机| 97资源免费视频| 亚洲色图 综合| 热久久无毒不卡| 一区二区不卡免费| 91精品婷婷国产综合久久| 九九综合网| 国产2.3.4区| 九九九偷拍| 亚洲a色| 91亚洲图片| 中文字幕三四区| 国产白丝精品在线观看| 免费自拍三级综合| 一区二区三区黄片免费观看| 操美女高潮抽搐白浆| 丁香五月影院| 超碰人妻久久人妻中文97| 中国小夫妻勾搭露脸淫荡对白| 精品亚洲俞拍视频一区| 91国产丝袜白虎| 亚洲色交| 国产高清吃奶免费视频网站| 国产欧美日韩精品中文| 97中文天堂| 成年男人的天堂| 狠狠干妹子| henhen91| 在线色导航| 美女被艹尤物视频| 操穴国产| 久久综合久色欧美综合狠狠| 96精品久久| 69av一区二区三区| 人人操人人狠狠操| 日韩精品熟妇| 午夜精品久久久久久久第一页按摩| 欧美激情激情xxxx欧美专区| 国产精品激情久久久久久久| 亚洲色五月| 日韩人妻无码精品系列| 9久9久9久9久视频网站| 思思视频免费看网站| 插日本熟女视频| 九色97| 欧美中文字幕一区| 天天综合站| 国产高清自拍视频| 国产福利影视| 久久大线蕉一区| 97色欧洲| 91午夜无码| 1024人妻| 91插B网站| 国产精品成久久久久午夜午夜| 日本东京热加勒比久久| 91xingse| 亚洲色图片区| 欧美操逼熟女| 色哟哟国产精品免费网址| 欧美国产成人在线| 免费在线看黄片av| 日本亚洲熟女视频| 色九九九综合| J?P?NESEHD熟女熟妇伦| 色呦呦呦在线观看视频| 97色欧州| 午夜性生活av免费在线看| 午夜免费福利视频一区| 另类 综合 日韩 欧美 亚洲| 亚洲 小说 欧美 激情 另类| 人妻久久久久久| 蜜桃狠狠色伊人亚洲综合 | h色99999| 狠狠色噜噜狠狠狠狠2018| 五月婷丁香| 骚女高跟AV在线| 囯产精品久久久久久久久久梁医生 | 性开放中文AV高清无码免费看| 人妻天天爽夜夜爽爽| 91青青| 欧美久久人人网| 超碰人妻久久人妻中文97| 久久二| 欧美精品久久久久久久久88| 亚洲999综合| 人妻一区二区三区视频| 青娱乐亚洲热| 91制服丝袜中文字幕| 中文字幕免费看大片| 天天夜夜久久| 精品九九九九九九| 9+1视频网址| 久久久性少妇| 国产乱人伦AVA麻豆软件.| 女生自91网站| 欧美一区二区三区四区综合| 天天亚洲综合| 亚洲熟伦熟妇AV无码春色| 欧美日韩m| 综合色欧美| 婷婷综合激情| 亚洲欧美91| 国产精品视频精品一二| 天堂亚洲精品| 91精品大奶人妻| 人人爽夜夜玩视频| 欧美性爱日韩性爱| 亚洲精品白丝| 久久久久久久久成人av解说| 超碰久久网| 人人妻人人色| 久久久久免费看少妇A片特黄| 蜜臀久久久久久999| 亚洲图片欧美| 欧美日韩国产中文精品字幕自在自线,| 综合亚洲欧美| 天美传媒av 在线| 国内外内射高清视频| 999狠狠综合| 91亚洲情色| 男人的天堂网免费| 久久专区| 黄色不卡视频| 精品国产人成在线| 啊啊啊在线看| 大香蕉AV在线| 国产无码成人无码| 日本999精品| 国产精品黄色三级av| 亚洲欧美日韩电影网站一区 | 色偷偷综合91久久噜噜| 中文字幕一区日韩精| 欧美激情 一区| 日韩啪啪视频| 91东北熟女| 人妻插插人妻人| 操逼日批| 东京热不卡视频| 女人高潮大叫一级毛片| 亚洲色宗合| 澳门成人网站久国产日韩| 高清国产性猛交xxxx乱大交| 欧美亚洲清纯| 性色一线| 噜噜噜在线视频| 97色欧洲| 嗯……啊…嗯嗯…啊…好舒服| 欧美偷拍区| 97在线观看免费视频l| 久久香蕉国产线看观看猫咪av| 死我十八禁| 日韩久久三区| 2021国产成人精品久久| 天天操天天日天天干| 日韩欧美一级特黄大片| 欧美丝袜中文字幕07在线| 91N五十路| 97人人操人人摸人人爱| 亚洲天堂男| 亚洲 欧美 小说| 激情视屏国产乱伦强奸| 欲综合网| 99黄页网站| 五月天色色网站| 人妻色偷色噜| 桑老女人九区| 久久久久久久久久久97| 操逼网站地址| 一级AV性爱| 免费男人的天堂| 亚州成人a∨| 亚洲欧美中文日韩视频中国语| 蜜臀一区二区三区在线 | 中韩中文字幕在线观看| 伊人影院在线理论播放| 精品成人av一区二区三区在线| 国产女大学生AV| 2019亚洲男人天堂| 精品免费1| 亚洲欧洲网站免费观看| 亚洲?V无码专区在线电影| 传媒在线观看一区二区三区| 噜噜噜亚洲精品| 偷拍 亚洲| 91动漫操逼视频| 尤物av网站免费在线播放| 天天大干大香蕉| 91美乳| 思思热久久成人| 九九久精品| 久久精品老司| 在线观看AV不卡| 婷婷AV一区二区三区| 亚洲AV成人无码一二三久久| 美女久久久久久久久久久| 亚洲欧洲激情| 久神马| 91天天综合网,天天综合网| 婷婷日韩一区二区三区中文字幕在线| a在线视频免费观看| 91午夜无码| 日本男人天堂| av橘色网站| 亚洲成人妻日韩在线| 好吊色在线观看| 九九九九九九九精品视频| 亚洲精品日日夜夜52| 国产 亚洲 丝袜 制服| 岛国毛片在线观看免费| 日韩av不卡在线看| 日本一区视频在线观看| 国产多人在线观看视频| 国产精品午夜福利亚洲综合网| 尤物网站91| 国产9区| 东京热毛片177b2viP| 老熟女阿 国产91| 好湿好紧视频| 久9精品| 青草一区二区| 国产精品久久久久婷婷二区次| 男人的天堂99| 九九九九精| 日韩色| 夜夜骑夜夜操| 欧美一二三级精品在线| 男女性感激情网站| 午夜理论片在线观看免费| 亚洲精品一区二区三区在线播放| 色香色欲天天综合网天天来吧| 国产九九九九九九九九| 女人高潮抽搐喷水视频网站| 91九九| 色色色热| 麻豆福利视频导航| B049AV在线播放| 秋霞福利网| 蜜桃午夜视频一区二区| 日日躁夜夜躁狠狠躁超爽| 欧美综合第一页| 精品人妻一区二区三区日产乱码| 狠狠操,使劲操| 天天懆天天日| 俺去俺来也在线www| 九九99精品视频在线观看| 又黄又爽在线观看视频| 中文字幕一区二区三区蜜臀| 国产不卡中文字幕免费avi| 加勒比伊人综合| 5252色欧美在线男人的天堂| 老熟女91| 影音先锋视频在线| 亚洲综合成人网| 少妇免费视频| 玖玖爱伊人玖玖爱| 九九久久久| 日本一区二区三区免费观看| 浪人综合网| 欧美精品99久久久| 射欧美综合| 亚州Av天美传媒| 91殴美| 久久久久亚洲三级电影| 久久久成人国产精品无码| 熟妇熟女视频一区二区三区| 人妻爽爽啪视频| 精品超碰色| 中文AV制服乱伦| 色成人Www精品永久观看| www.夜夜| 亚州综合图片| 91精品人妻| 亚洲国产精品9999在线观看| 91操碰| 亚洲欧洲色情高清| 日韩有码中文字幕女同性恋| 久久精品人人做人人看| 亚洲精品精品一区二区| 丝袜喷水在线| 国产精品农村妇女精品| 亚洲精品一区二区精品| 97人人草| 天天综合麻豆视频| 午夜操一操| 欧洲一级性爱视频在线观看| 男人下部插入女人下部| 2017天天操天天日| 操迟操逼在巾线Fre看| 99色色网| 精品综合久久久久久97| 日韩熟女无码| 丰满人妻一区二区三区| 99精品久久久久久| 我要去看2个日本美女.com曹逼| 日韩成人性爱电影在线播放| 九九久久国产精品| 色妇综合网| 丰满高潮18xxxx| 人妻在线中出视频| 熟女熟妇一区二区三四区| 亚洲欧洲综合成人av一区| 大香蕉97久久| 国产9熟妇视频网站| 国产毛片在线| 黄总AV色图| 99re9| 欧美婷婷五月天| 国产精品熟妇一区二区三| 欧美超碰97| 三级三久久线久久99久目本WW| 日本淫穴在线| 中文字幕美女91| 色妺妺在线视频| 91操熟女视频| 久精品无码av一区二免费国产在线观看| 日日天天久久啊啊aaa| 少妇天堂| 国产农村一一级特黄毛片| 国产精品久久久久久久免牛肉蒲团 | 夜夜骑操视频| 亚欧毛片基地国产毛片基地| 精品一区二区三区最新| 亚洲综合在线第一页| 色999五月色| 肉丝中文无码高清| 欧美人妻久久精品二区三区| 国产青青美女玩逼视频| 在线岛国新天堂8| 中文字幕丝袜美腿| 日本淫乱女一区二区三区视频| 久久久婷| 97操b| 超碰人人色| 疯操AV| 人妻精品视频一区二区| 蜜臀在线看片| 国产亚州精品美女久久久免费| 91日产欧美| 精品毛片av一区二区| 欧美国产视频| 国产一区二区三区白丝| 嗯嗯啊啊好疼| 91碰超| 丝袜高跟澳门91视频| 国产AV久久野战精品| 香蕉免费一区二区三区不读| 黄片视频,下载| 日韩丝袜高跟制服在线观看| 操迟操逼在巾线Fre看| 天美传媒Av在线| 日韩国产欧美伦理在线| 九9热伊人| 久久鲁干| 亚洲小说视频| 精品91摸| 91人精品妻入口| 物尤视频一区二区| 国模艳艳啪啪一区| 亚洲美腿丝袜香蕉影视欧美成人| 色区久久| 狠狠超| 国产日韩精品一区二区三区| www.久久制服糖| 国产第11页| 亚洲最大网站av| 亚洲色婷婷综合久久久久中文| 日产狠狠干| 国产午夜精品理论片一二三区区 | 亚洲无码一区成人免费午夜| 天天综合色电影| 精品无码欧美三级| 超碰在线97国产| 新婚人妻扶着粗大强行坐下| 欧美日韩小说| 涩爱AV在线| 三级特黄60分钟播放| 另类欧美| 精品区9| 亚洲密乳AV| 高清不卡 中文 人妻| 激情五月综合| 亚洲日韩在线a不卡99精品| 大香蕉之青青草原| 色婷婷综合网| 思思视频免费看网站| 人妻超碰青青草98| 亚洲男人天堂Av| 强奸乱伦免费网站| 亚洲欧美激情小说| 国产天天骚| 永久免费发布性爱网| 天天干夜夜鈤| 久久久久久久久久黄色网| 操逼逼无码| 欧美裸体美女日麻屄| 鸥美极品| 久久啊哟| 久久精品国产72国产精品福利| 国产精品乱码久久久久| 亚洲诱惑| 91neishe| 国产女人操逼视频| 色激情综合网站| 亚洲综人| 欧美精品丝袜久久久中文字幕| 日本一本道A级黄色毛片试看60分钟| 国产精品乱码久久| 欧美色图人妻| 91n美女视频| 日本高清一区二区在线| 天天干天天舔| 男人的天堂99| 久久熟女久| 成 人 影视 一区 二区 三区 四区| AV不卡在线| 亚洲高清视频在线免费观看| 亚洲综合草草| 91高跟美女在线播放| 亚洲色色色| 亚洲一级特黄大片在线播放91| 久久69| 久久久久久99999国产精品| 动漫片子网站3黄| 久久人人看| 精品人妻中文字幕4399| 中文字幕欧美日韩三级| 国产2.3.4区| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 日韩精品怡红院| 99国内精品| 噜噜吧,噜噜色,噜噜| 在线播放免费av福利片| dy888午夜老子影视达达兔| 国产精品97超碰| 97超碰免费人人性爱| 欧美|91色综合| 柠檬AV导航| 91成人久久| 久热在线精品免费观看| 中文字幕三四区| 欧洲精品二区| 少妇熟女视频一区二区三区| 亚洲色香| 美骚妇av高清在线| 黑丝91视频| 欧美午夜精品久久久久久3D| 99热啪啪| 色小视频蜜乳| 乱伦av.com| 日韩激情啪啪啪| 国产精品一区二区久久精品| 97超碰色| 色九久| 91老司机精品| 久久久78| 99热这里只有精品1| 久久久久久久久久久久欧美日| 日韩精品99久久久久久中文字幕| 99自拍B亚洲 | 久久久久久综合久久伊人蜜月| 色香网| 啊啊啊操死我了| 久操av在线| 国产精品在线一区二区| 97精品久久久久中文字幕| 国产二区三区粉嫩在线| 国产不卡中文字幕免费avi| 亚洲AO在线| 天天天肏屄欧美| 国产性刺激| 青青草国产亚洲精品久久| 亚洲色欲一区二区三区| 欧美天天综| caopeng97人妻| 亚洲永久永久永久永久一级一级一级精品| 午夜性| 96免费视频在线| 欧美成人色| 久久九精品| 97精品久久久久中文字幕| 夜夜 中文视频rt| 少妇99| 97超碰国产亚洲精品| 国产深喉| 色综合天天爱去电影网| 99re在线| 久久永久无码人妻视频| av一区二区三区不卡| www.久久制服糖| 免费一级精品啪啪视频| 国产精品自在线发布| h无码动漫在线观看| wwwcaobibi| 亚洲精品99| http://qxhbdz.com| av在线人气| 色偷偷色偷偷欧美日韩| 亚洲色图 图片| 人人妻人人色一区二区三区| 精品人妻一区二区三区四区| 91这里只有精品| 国产福利电影| 男人a天堂手机在线版| 人成午夜免费大片| 日日夜夜干| 精品少妇一区二区三区免费观看| 九色97| 午夜欧美J进J出白浆流出久久久| 天天干天天舔| 精品欧美А∨无码黑人大荫蒂| 2021久久国产综合精品青草| 欧美特大黄一级片片免费| 人妻久久久| 天天综合网久久ww| 久久宗合亚洲| 懂色Av一区二区三区| 丁香婷婷五月| 国语国产操逼伊人AV网| 99热只有| 99九九久久| 青青草AV色| 凹凸视频在线一区二区| 奇米狠999| 青青草日韩无码| 超碰人妻久久人妻中文97| 亚洲 欧美 综合 91| 日韩精品-原创伙伴| 亚洲精品白浆高清久久久久久 | 91九九九小逼| 67914在线兔费成人视频| 日本韩高清无砖码22o| 91快色色色色色| 91色综| 国产丸一视频| 久久老女人| 精品v日韩欧美国产| 青青草密桃在线播放| 中文字幕在线2| 青青在线视频日韩欧美| 亚洲精品第一| 黑丝91视频| 亚洲骚男同com| 性爱视频免费网址| 婷婷丁香在线| 精品人妻一区二区三区夜夜| 99re视频这里只有精品| 岛国片国产成人亚洲播放| 天天欧美色| 亚洲男人天堂2| 久久精品国内Av熟女高清| 久热婷婷| 97精品97久久| 中文一区二区三区影院| 亚洲日本韩国在线| 色婷婷久久综合超碰| 青草成人免费视频一COm| 日本激情免费大片| 中文字日本乱码| 色九久| 日本护士高潮| 久久久∴| 97超碰人人模人人拍人人| 国产精品秘 福利姬在线观看| 色五月第四色| 亚洲综合电影| 欧美在线播放aaaa| 国产情色在线| 欧美A片中文字幕| 国产人妻精品久久久一区二区三区| 俺也射| 欧美一级国产一级| 第45页一区二区| 啊啊啊无码| 亚洲成人免费电影| 国产精品3| 国产精品美女久久久久AⅤ国产馆| 超碰亚洲欧美日韩无| 人妻91少妇| 黑人精品成人一区二区三区| 99黄页网站| 国产v片在线免费观看| 综合色图亚洲欧美| 欧美激情在线观看视频| 久久精品国产亚洲AV成人直播| 成人在线永久| 26uuu国产亚洲综合| 久久久亚洲精品电影免费看| 1240青青草一区二区三区视频天爱| 欧美日韩操逼嗦吊| 99热18这里只有精品| av在线观看不卡网站| 中文字幕少妇色| 女沟厕偷窥piss小便| 99热综合在线| 淫荡网址| 手机av天堂久久久久| 欧美色青| 又黑又大又粗 | 国产精品久久久视频| 五月丁香激情四射| 丝袜美腿欧美| 欧美爱爱97| 91人妻人人妻| 天天看天天日天天操| 东北女人av| 国产色产精品在线观看 | 亚洲欧美国产va在线播放频| 91蜜臀在线久久久久| 97精品久久| 精品国产自在在线99| 中文字幕丰满子伦无码专区在线视频最新 | 成人无遮挡毛片免费看| 青青操少妇| 人妻偷拍一区二区三区| 91熟女综合| 久久夜黄色无码A级大片| 97丝袜亚洲在线播放| 国产区91柔拿会所技师| 人人爽夜夜玩视频| 乱伦熟女区| 91精品国产91熟女| 97九色人妻| 午夜男女爽爽大片免费观看| 91在线色| 自拍偷拍 高清无码| 另类老少妇| 激情五月综合网| 干超碰碰熟女| 白丝jkav| 人妻中文字幕日韩电影| 亚洲色图日韩丝袜制服一区二区五月在线| 国产99热| 日韩欧美性爱电影在线观看| 日韩国产十八禁| 一牛影视成人片免费| 9久9久9久9久视频网站| 色五月婷婷网| 一级片视频啪啪| 欧美乱妇狂野欧美在线视频| hd成人一区二区在线| 精品夜夜澡人妻无码AV| 亚州色交| 国产家庭乱伦性爱视频| 色香欲天天天天综合色| 激情四射五月天| 97色网| 日韩78m视频| 欧洲熟妇xxXx欧美老妇裸体| 麻豆成人影音在线| 欧美日韩黄色片一区二区三区四区人与兽做爱 | AV色五月| 天天色综合图片| 久久久久亚洲三级电影| 国产AV天美传媒一区二区三区 | 免费一级黄色录像影片| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 精品欧美不卡在线播放| 夜夜爽爽夜夜精品视频| 五月婷婷爱六月丁香色| 国产精品人妻无码久久久互動交流 | 欧美日韩另类在线播放| 久热网| 久久久不能久久久久| 国产精品久久久久亚洲av| 狠狠入| 91久久18禁| 99性视频| 老司机深夜18禁污污网站| 精品少妇一区二区三区| 肉丝网站91| 免费人成?大片在线播放| aa片毛片| 激情文学亚洲| 99999精品成人| 大屁股xxxxx| 欧美gv在线观看| 亚洲国产97在线精品一区| 国产亚卅97| 婷婷综合五月| 天天草夜夜草高潮片| 天天做天天爱| 欧美成人国产精品| 久久久噜噜噜久久久| 欧美极度丰满熟妇hd| 亚洲国产成人精品999| 欧美综色欧| 搞中出视频在线观看| 色婷婷影院| 99热99在线播放激情| 国产福利合集| 免费精品AB| 欧美色图下一页| 欧日韩不卡视.频| 亚洲日韩美女中文字幕乱| 国产精品点击进入在线影院高清 | 色与欲影视天天看综合网| 美骚妇av高清在线| 国产剧情一区在线观看| 92午夜免费福利视频| 香伊人在线| 麻豆成人影音在线| 色97国产69香蕉| 久久久久久9999| 精品免费1| 99在线观看| 艹少妇网站| AV天堂国产| 一区二区乱码福利| 校园激情狠狠四射| 高清孕妇孕交 交孕妇| 亚洲精品骚逼| 青青草在线视频人人想人人上| 五月天综合网| 大色综合网| 亚洲免费成人在线高清无码视频| 激情五月天中文字幕色| 亚洲欧美清纯| 99久久免费看精品国产一区| 激情人妻另类| 九一精品牛牛一区二区| 精彩视频日韩| 亚洲无套久久嗯嗯| 久久久激情| 国产日本久久免费精品| 久久九九视频九九视频| 第四色奇米影视777| 无码精品久久久久久亚洲| 亚洲资源站| 欧美图片校园春色| 国产AV线| 日韩特一级久久| 亚洲欧美在线综合| 欧色性第一页| 美女主播色欲91抠b在线播放| 看黑人AV不卡| 久久久久久久久久久久久9999| 东京热男人的天堂网| 思思99热| 夜色五月天| 日韩精品一二三四| 啊啊啊啊嗯嗯嗯用力好爽 | 五月丁香六月婷综合成人综合 | 黄色操人| 国产精品免费1区2区视频| A 天堂| 欧美黄色手机在线观看| 明星性猛交ⅹxxx乱大交| 乱伦熟女论坛| 色欲久久久久综合网| 偷拍偷窥与盗摄视频专区| 天堂v无码免费视频| 视频国产欧美在线播放| 亚洲av噜噜噜噜噜噜| 2017av无码免费无线播| 亚洲欧美国产va在线播放频| 囯产精品久久久久久久久久梁医生| 亚洲色婷婷久久91| 2025年A片视频精品| 欧美自拍偷拍综合图片| 国产女同视频在线播放| 国产99精品一区二区三区免费| 波多野结衣一级视频| www.大香| 日韩精品亚洲专区在线影视| 操逼操操操91| 激情久久久| 国产黄a三级三级三级av在线看| 麻豆 欧美 日韩| 青青草黑寡妇男人天堂| 97国产色图 | 国产一区二区三区白丝| 黄色AAAAA欧美| 女同性恋久久| 亚洲综合在线视频| 久久婷婷国产一区二区色| 一区二区三区日韩欧美| 国产久久一区二区| 亚洲精品97p| 伊人91| 亚洲欧美一区二区网址| 777AV电影| 亚洲精品乱码久久久久久蜜桃麻豆| 九九色影院| 九九热九九热| 亚洲情色图片区| 亚洲人人夜夜澡人人爽| 男人天堂2019| 岛国A V在线免费看| 青青伊人这里只有精品| 99热欧美| 亚洲国产剧情少妇激情| 欧美亚洲宗合色性图| 高潮9999外国| 亚洲第一页第二页激情| 99re公开精品免费视频| 97色婷| 手机不卡视频不卡在线一二三区| 青青伊人加勒比海| 九九九国产| 精品久久久久久无码| 欧美强奸一区二区诱惑| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 亚洲精品九九九| 大香蕉一区二区在线观看.| 亚洲无码久久久久久久| 97网址www| 天海翼久久| 91综合网站| 隔壁邻居波多野结衣中文字幕| 色色五月天激情| 看黑丝美女操逼青青网站| 超碰在线在公开超碰在线在公开| 91丨人妻丨国产丨丝袜| 老熟女乱子伦中文字幕一区二区| 婷婷综合在线| 蜜臀久久在线视频| 熟女少妇一区二区三区| 亚洲 小说 欧美 激情 另类| 欧亚免费视频| 宗合情欲网| 欧美日综合| 精品成人无码| 日产狠狠干| 涩涩久久精品| 欧美中出| 亚洲午夜福利视频| 第45页一区二区| 女生看匆91网站| 日韩无码三级影院| 懂色AV一区二区三区| 国产和美国毛片| 十八禁啪啪视频| 91干熟女| 久久综合女优| 精品黄色电影| 秋霞曰韩R级| 岛国人妻少妇av在线观看| sewuyueav| 国产亚洲色婷婷久久99精品91葵花宝典 | 国产一区96在线| 色一区二区三区综合| 黄色成人网久久久久久| 亚洲激情四射| 色亚州人久干视频在线观看免费版| 欧美性xxxxx狂欢| 翔田千里av一区二区三区| 超碰98综合网| 呦呦影院| 嗯啊不要在线| 91蜜桃传媒精品久久久一区二区| 乱伦色图网址是多少| 好湿好紧好爽 视频| 9久9久9久9久视频网站| 久操网视频| 欧美狠狠弄| 日日夜夜免费| 亚洲综合九九| 熟女熟妇伦久久影院毛片一区二区| 日韩一区二区精彩视频| 成年女人一区| 超碰诱惑| 熟女被操视频网址| 1024午夜激情男人的天堂| 蜜臀AV秘一区翔田千里| 精品国产嫩穴视频| 国产熟女一区二区| 无码自拍SM| 久操| 日本女优在线视频福利| 91国产美女丝袜足交精品视频| 免费AV中文网在线观看| 天天欧美欧美亚洲网| 欧美激情内射| 日韩人妻无码专区| 日韩欧美蜜桃精品久久中文字幕久久| 女同女同恋久久级三级| 色女综合| 亚洲一区二区三区在线激情| 天天欧美欧美亚洲网| 午夜一区| 丝袜 亚洲 偷拍| 啊啊啊啊嗯嗯在线久久久| 综合欧美日本三级| 粉嫩久久久极品| 五月天黄色激情视频| 久久久久久久六六| 亚洲色色探花| 97超碰免费生活| 国语国产操逼伊人AV网| 91激情综合| 久久久久久国产手机AV| 1024午夜激情男人的天堂| 99久久婷婷丁香| 欧美国产操逼| 国产综合网站在线播放 | 99综合免费视频| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 天天肏天天干| 久久人妻熟女一区二区| 丁香五月久久| 这里只有精品97| 狠狠操夜夜操蜜桃视频三区| 亚洲中文字幕熟女少妇一区二区| 9999久久久久| 亚洲综合伊人无码久久| 亚洲天堂男人在线| 啊啊啊操死我| 免费农村成人少妇人妻Aa一区二区视频 | caorenqi shipin| 人妻久久一区二区三区| 91久精品| 日韩黄片影院| 美美91成人国产精品欧美精品久久久久久久| 1人人看人人摸人人操| 人妻内射一区二区在线视频| 风流老熟女一区二区三区l| 亚洲人精品午夜不卡| 国产日韩欧美三级片| 亚洲欧洲自拍| 99.色网| 蜜乳Av成人片网站| 四虎在线免费视频| 欧洲熟妇xxXx欧美老妇裸体| 91精品导航| 超碰调教97| WWW操逼| 日韩 欧美 国产 麻豆| 十八禁视频网站| 青青草久草| 丰满搜索结果 -第18页- 久久高清无码 | 五月婷婷激情综合| 色婷婷国产精品一区在线观看| 久久九七| 国产精品一级特黄aaa大片在线观看| 综合色久欲| 一区二区你上我|