日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

09 Android 植物人大战僵尸-生成小太阳

發(fā)布時(shí)間:2023/12/20 Android 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 09 Android 植物人大战僵尸-生成小太阳 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 效果

2. 需求

  • 安置向日葵完成,等待 10 秒 產(chǎn)生一個(gè)太陽
  • 太陽 5 秒鐘如果沒有被收集,則自動消失
  • 太陽如果被點(diǎn)擊,即收集,則執(zhí)行位移操作,回到卡片狀態(tài)欄的太陽卡槽里
  • 3. 思路

  • 向日葵的 10 秒產(chǎn)生太陽事件
  • package com.su.botanywarzombies.entity;public class Flower extends BaseModel {@Overridepublic void drawSelf(Canvas canvas, Paint paint) {super.drawSelf(canvas, paint);if (isLive) {canvas.drawBitmap(Config.flowerFlames[farmeIndex], locationX, locationY, paint);/** farmeIndex ++; if (farmeIndex == Config.peaFlames.length -1) {* farmeIndex = 0; }*/farmeIndex = (++farmeIndex) % 8;// 每隔十秒產(chǎn)生一個(gè)小太陽if (System.currentTimeMillis() - lastBrithTime > TIME) {lastBrithTime = System.currentTimeMillis();creatSun(locationX, locationY);}}}// 產(chǎn)生陽光private void creatSun(int locationX, int locationY) {GameView.getInstance().creatSun(locationX, locationY);}
  • 游戲圖層畫出小太陽
  • package com.su.botanywarzombies.view;public class GameView extends SurfaceView implements SurfaceHolder.Callback, Runnable {// 第三層圖層的集合,冉冉升起的小太陽private ArrayList<BaseModel> gameLayout3;// 生產(chǎn)陽光public void creatSun(int locationX, int locationY) {// 陽光在第三圖層synchronized (mSurfaceHolder) {gameLayout3.add(new Sun(locationX, locationY));}}private void onDrawing(Canvas mCanvas) {...// 第三圖層,陽光for (BaseModel model : gameLayout3) {model.drawSelf(mCanvas, mPaint);}...}
  • 超時(shí)自動回收小太陽
  • package com.su.botanywarzombies.entity;public class Sun extends BaseModel implements TouchAble {/*** SHOW 生命周期TIME有效* * MOVE 生命周期無效* */public enum SunState {SHOW, MOVE}@Overridepublic void drawSelf(Canvas canvas, Paint paint) {if (isLive) {} else if (mSunState == SunState.SHOW) {// 讓陽光 TIME 后消失if (System.currentTimeMillis() - brithTime > TIME) {isLive = false;}}canvas.drawBitmap(Config.sun, locationX, locationY, paint);}

    對于游戲圖層

    package com.su.botanywarzombies.view;public class GameView extends SurfaceView implements SurfaceHolder.Callback, Runnable {private void updateData() {deadList.clear();// 移除到死亡的陽光for (BaseModel model : gameLayout3) {if (!model.isLive) {// 放置死亡的對象deadList.add(model);}}// 松開鼠標(biāo),無效對象消失for (BaseModel model : deadList) {if (!model.isLive) {// 放置死亡的對象gameLayout1.remove(model);gameLayout2.remove(model);gameLayout3.remove(model);}}
  • 點(diǎn)擊收取小太陽,并為位移運(yùn)動做準(zhǔn)備
  • package com.su.botanywarzombies.entity;public class Sun extends BaseModel implements TouchAble {@Overridepublic boolean onTouch(MotionEvent event) {int x = (int) event.getX();int y = (int) event.getY();switch (event.getAction()) {case MotionEvent.ACTION_DOWN:if (touchArea.contains(x, y)) {mSunState = SunState.MOVE;// 小太陽(locationX,locationY)到卡片狀態(tài)欄的太陽(Config.sunDeadLocationX,Config.sunDeadLocationY// )xDirection = locationX - Config.sunDeadLocationX;yDirection = locationY - Config.sunDeadLocationY;// 速度定義xSpeed = xDirection / 10f;ySpeed = yDirection / 10f;return true;}break;default:break;}return false;}
  • 小太陽移動到卡片槽動畫
  • package com.su.botanywarzombies.entity;public class Sun extends BaseModel implements TouchAble {@Overridepublic void drawSelf(Canvas canvas, Paint paint) {if (isLive) {// move狀態(tài)的陽光位移動畫if (mSunState == SunState.MOVE) {locationX = (int) (locationX - xSpeed);locationY = (int) (locationY - ySpeed);// 當(dāng)小太陽升到太陽卡片位置的時(shí)候,小太陽表示已經(jīng)收集完畢,可以消失了if (locationX < 0 || locationY < 0) {locationX = Config.sunDeadLocationX;locationY = Config.sunDeadLocationY;isLive = false;}.... canvas.drawBitmap(Config.sun, locationX, locationY, paint);

    4. Demo 下載

    https://github.com/sufadi/BotanyWarZombies

    總結(jié)

    以上是生活随笔為你收集整理的09 Android 植物人大战僵尸-生成小太阳的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。