Android遊戲開發:物理遊戲之重力系統開發--圓形自由落體Demo

來源:互聯網
上載者:User

標籤:android   des   style   blog   class   code   

    本節為大家提供有關物理遊戲的知識,講解了一個簡單的圓形自由落體Demo的編寫。。Java代碼package com.himi;   import java.util.Random;   import java.util.Vector;   import android.content.Context;   import android.graphics.Canvas;   import android.graphics.Color;   import android.graphics.Paint;   import android.util.Log;   import android.view.KeyEvent;   import android.view.SurfaceHolder;   import android.view.SurfaceView;   import android.view.SurfaceHolder.Callback;   public class MySurfaceViee extends SurfaceView implements Callback, Runnable {       private Thread th;       private SurfaceHolder sfh;       private Canvas canvas;       private Paint paint;       private boolean flag;       public static int screenW, screenH;       private Vector<MyArc> vc;//這裡定義裝我們自訂圓形的容器       private Random ran;//隨即庫       public MySurfaceViee(Context context) {           super(context);           this.setKeepScreenOn(true);           vc = new Vector<MyArc>();           ran = new Random();//備忘1           sfh = this.getHolder();           sfh.addCallback(this);           paint = new Paint();           paint.setAntiAlias(true);           setFocusable(true);       }       public void surfaceCreated(SurfaceHolder holder) {           flag = true;//這裡都是上一篇剛講過的。。。           th = new Thread(this);           screenW = this.getWidth();           screenH = this.getHeight();           th.start();       }       public void draw() {           try {               canvas = sfh.lockCanvas();               canvas.drawColor(Color.BLACK);               if (vc != null) {//當容器不為空白,遍曆容器中所有圓形畫方法                   for (int i = 0; i < vc.size(); i++) {                       vc.elementAt(i).drawMyArc(canvas, paint);                   }               }           } catch (Exception e) {               // TODO: handle exception           } finally {               try {                   if (canvas != null)                       sfh.unlockCanvasAndPost(canvas);               } catch (Exception e2) {               }           }       }       private void logic() {//主邏輯           if (vc != null) {//當容器不為空白,遍曆容器中所有圓形邏輯               for (int i = 0; i < vc.size(); i++) {                   vc.elementAt(i).logic();               }           }       }       @Override      public boolean onKeyDown(int keyCode, KeyEvent event) {           //當按鍵事件響應,我們往容器中仍個我們的圓形執行個體           vc.addElement(new MyArc(ran.nextInt(this.getWidth()), ran.nextInt(100), ran.nextInt(50)));           return true;       }       public void run() {           // TODO Auto-generated method stub           while (flag) {               logic();               draw();               try {                   Thread.sleep(100);               } catch (Exception ex) {               }           }       }       public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {           Log.v("Himi", "surfaceChanged");       }       public void surfaceDestroyed(SurfaceHolder holder) {           flag = false;       }   }         OK,代碼都很簡單,也很清晰! 稍微說一句:像MyArc裡面也有類似MysurfaceView中一樣的方法 logic() 以及draw(),這樣能更好的管理我們的代碼結構,思路清晰,各盡其責,避免混亂。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.