麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

游戲Loaading的設計

2019-11-18 16:11:32
字體:
來源:轉載
供稿:網友

        為什么很多游戲要加入Loading滾動條呢?加入Loading狀態并不是為了使軟件顯得更專業美觀,而是為了保證程序的運行內存不溢出。通常計算機/手機的存儲系統分為:cup 的緩存,磁盤(或者手機中的存儲用的的Flash RAM或者其他類型的可以持久保存的存儲系統),運行內存。我們知道通常NOKIA S40的heap size為200KB大小,而通常我們加入程序和3張128*128的圖片之后內存就趨于崩潰了,再加入聲音和地圖,程序的運算內存就顯得太不夠了。一般來講,很多游戲僅僅在運行的時候把所有的資源一次性讀入heap memory這樣,我們在模擬器看到程序運行的狀況就非常接近崩潰的邊緣,如果不小心加入了新的圖片,可能就沒有足夠的運算內存了。

         我們如何解決heap size不夠的事情呢?手機是不能夠改變其heap size的,我們只有想辦法控制heap memory的使用。最直觀的做法就是:存儲內存與運算內存的優化使用,當運算內存需要資源時從存儲內存中調用,需要新的資源時,就把不需要的釋放掉。下面我就結合一段代碼解釋我們是如何制作Loading狀態的。

         眾所周知,java是內置多線程的,我們可以使用兩個線程來解決loading的問題,一個讀資源的線程,一個繪制資源的線程。程序代碼:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
 * Loading演示
 * @author gaogao
 * */
class MainCanvas
    extends Canvas
    implements Runnable {

//程序狀態
  static final int LOADING = 0;
  static final int GAMEING = 1;

//程序狀態控制器
  int state = LOADING;

//主線程
  Thread thread = null;
//是否loading完畢,
  boolean isLoaded = false;

//內部類,新開讀取資源的 線程
  class Loading
      implements Runnable {
    //內線程
    Thread innerThread = null;

    public Loading() {
      innerThread = new Thread(this);
      innerThread.start();
    }

    int counter = 100;
    public void run() {
      //模擬讀取資源
      //把下面的東西改成讀取資源的代碼即可
      while (counter > 0) {
        counter--;
        try {
          Thread.sleep(20);
        }
        catch (Exception ex) {}
      }
      //loading結束
      isLoaded = true;
    }
  }

  Loading loading = null;

  public MainCanvas() {
    loading = new Loading();
    thread = new Thread(this);
    thread.start();

  }

  int loadingCounter = 0;

//繪制..
  public void paint(Graphics g) {
    g.setColor(0);
    g.fillRect(0, 0, getWidth(), getHeight());
    switch (state) {
      case LOADING: {
        g.setColor(0XFFFFFF);


        g.drawString("LOADING" + ">>>>>".substring(0, loadingCounter),
                     getWidth() >> 1, getHeight() >> 1,
                     Graphics.HCENTER Graphics.TOP);

        loadingCounter = ++loadingCounter % 5;

      }
      break;
      case GAMEING: {
        g.setColor(0XFFFFFF);
        g.drawString("GAME", getWidth() >> 1, getHeight() >> 1,
                     Graphics.HCENTER Graphics.TOP);
      }
      break;
    }
  }

  public void run() {
    while (true) {
      try {
        Thread.sleep(100);
      }
      catch (Exception ex) {

      }
      if (isLoaded) {
        loading = null;
        state = GAMEING;
      }
      repaint(0, 0, getWidth(), getHeight());
      serviceRepaints();
    }
  }
}

public class Main
    extends MIDlet {
  MainCanvas mc;

  public void startApp() {

    if (mc == null) {
      mc = new MainCanvas();
      Display disp = Display.getDisplay(this);
      disp.setCurrent(mc);
    }
  }

  public void destroyApp(boolean bool) {}

  public void pauseApp() {}
}

(出處:http://www.companysz.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久一区 | 色99久久| 91精品国产乱码久久久久久久久 | 国产一级淫片在线观看 | 欧美激情精品久久久久 | 精品国产一区二区久久 | 日韩大片在线永久观看视频网站免费 | 91麻豆精品国产91久久久更新资源速度超快 | 午夜精品一区二区三区免费 | 特片网久久 | 视频一区二区精品 | 国产va在线观看免费 | 超碰人人做人人爱 | 久草在线高清 | 免费a视频 | 亚洲3p激情在线观看 | 久久久久久久久成人 | 国产乱淫av一区二区三区 | 成人午夜在线免费 | 国产片91 | 欧美成年性h版影视中文字幕 | 久久久新 | av在线直播观看 | 黄色免费在线电影 | 一区二区三区欧洲 | 欧美精品成人一区二区在线观看 | 亚洲欧洲日产v特级毛片 | 国产羞羞视频在线观看免费应用 | 日本在线观看高清完整版 | 中文字幕观看 | 91九色电影| 亚洲免费片 | 精品一区二区中文字幕 | 欧美黄色性视频 | 国产一区二区三区四区五区在线 | 黄色网电影 | 成人福利在线 | 羞羞的视频免费 | 一级黄色影片在线观看 | 成人福利电影在线观看 | 亚洲啪 |