⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpprogressthread.java

📁 一个完整的J2ME手机游戏
💻 JAVA
字号:
/**
 * <p>Title: lipeng</p>
 * <p>Description:
 * You cannot remove this copyright and notice.
 * You cannot use this file without the express permission of the author.
 * All Rights Reserved</p>
 * <p>Copyright: lizhenpeng (c) 2004</p>
 * <p>Company: LP&P</p>
 * @author lizhenpeng
 * @version 1.0.3
 * <p>
 * Revise History
 * 2004.07.15 In MobilePhone the progress time too small change to 300 v1.0.1
 * 2004.07.15 Change thread's priority to min_priority V1.0.2
 * 2004.07.21 Change some public member to private V1.0.3
 * </p>
 */


package lipeng;

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

public class LPProgressThread extends Canvas
  implements Runnable
{
  public LPProgressThread(MIDlet midlet)
  {
    //setFullScreenMode(true);
    loadProgressIsOver = false;
    this.midlet = midlet;
    this.width = this.getWidth();
    this.height = this.getHeight();
  }
  public void paint(Graphics g)
  {
    drawGaugeScreen(g);
  }
  private void drawGaugeScreen(Graphics g)
   {
     g.setColor(255,255,255);
     g.fillRect(0,0,width,height);

     g.setColor(255,0,0);
     g.drawString("游戏装载中...",(width-font.stringWidth("游戏装载中..."))/2+10,
                  height/2-25,g.LEFT|g.TOP);

     g.setColor(255,0,0);
     g.drawRect(10,height/2,width-20,20);
     g.setColor(0,0,255);
     g.fillRect(10+1,height/2+1,gaugeCnt*(width-20)/PROGRESS_END-1,20-1);

     g.setColor(255,0,0);

     g.drawString(String.valueOf(gaugeCnt*100/PROGRESS_END),(width-font.stringWidth("000"))/2,
                  height/2+4,g.LEFT|g.TOP);
     g.drawString("%",(width-font.stringWidth("000"))/2+font.stringWidth("00"),
                  height/2+4,g.LEFT|g.TOP);

   }

  public void run()
  {
    try
   {
     Thread currentThread = Thread.currentThread();
     while (currentThread == progressThread)
     {
       startTime = System.currentTimeMillis();
       repaint(0, 0, width, height);
       serviceRepaints();
       gaugeCnt += progressInterval;
       if(((LPIGetCanvas)midlet).getCanvas()!=null)
       {
         progressInterval +=1;
       }
       if(gaugeCnt>=PROGRESS_END)
       {
         if(((LPIGetCanvas)midlet).getCanvas()==null)
         {
           gaugeCnt -= progressInterval;
         }
         else
         {
           loadProgressIsOver=true;
           Display.getDisplay(midlet).setCurrent(((LPIGetCanvas)midlet).
                                                 getCanvas());
           ((LPIGameStart)((LPIGetCanvas)midlet).getCanvas()).start();
           break;
         }
       }
       endTime = System.currentTimeMillis();
       if ( (endTime - startTime) < FRAME_TIME)
       {
         Thread.sleep(FRAME_TIME - (endTime - startTime));
       }
     }
   }
   catch (InterruptedException ie)
   {
     System.out.println(ie.toString());
   }
  }
  public void start()
  {
    progressThread = new Thread(this);
    progressThread.setPriority(Thread.MIN_PRIORITY+1);
    progressThread.start();
  }
  public void stop()
  {
    progressThread = null;
  }
  public boolean loadProgressIsOver = false;
  private volatile Thread progressThread = null;
  private int width;
  private int height;
  private long startTime;
  private long endTime;
  private static final int FRAME_TIME = 200;
  private Font font = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
                                   Font.SIZE_LARGE);

  public int gaugeCnt;
  private int progressInterval = 1;
  private static final int PROGRESS_END=150;
  private MIDlet midlet;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -