Advertisement
Guest User

Untitled

a guest
Mar 1st, 2015
19,767
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.05 KB | None | 0 0
  1.  
  2. import android.graphics.Canvas;
  3. import android.view.SurfaceHolder;
  4.  
  5. public class MainThread extends Thread
  6. {
  7.     private int FPS = 30;
  8.     private double averageFPS;
  9.     private SurfaceHolder surfaceHolder;
  10.     private GamePanel gamePanel;
  11.     private boolean running;
  12.     public static Canvas canvas;
  13.  
  14.     public MainThread(SurfaceHolder surfaceHolder, GamePanel gamePanel)
  15.     {
  16.         super();
  17.         this.surfaceHolder = surfaceHolder;
  18.         this.gamePanel = gamePanel;
  19.     }
  20.     @Override
  21.     public void run()
  22.     {
  23.         long startTime;
  24.         long timeMillis;
  25.         long waitTime;
  26.         long totalTime = 0;
  27.         int frameCount =0;
  28.         long targetTime = 1000/FPS;
  29.  
  30.         while(running) {
  31.             startTime = System.nanoTime();
  32.             canvas = null;
  33.  
  34.             //try locking the canvas for pixel editing
  35.             try {
  36.                 canvas = this.surfaceHolder.lockCanvas();
  37.                 synchronized (surfaceHolder) {
  38.                     this.gamePanel.update();
  39.                     this.gamePanel.draw(canvas);
  40.                 }
  41.             } catch (Exception e) {
  42.             }
  43.             finally{
  44.                 if(canvas!=null)
  45.                 {
  46.                     try {
  47.                         surfaceHolder.unlockCanvasAndPost(canvas);
  48.                     }
  49.                     catch(Exception e){e.printStackTrace();}
  50.                 }
  51.             }
  52.  
  53.  
  54.  
  55.  
  56.             timeMillis = (System.nanoTime() - startTime) / 1000000;
  57.             waitTime = targetTime-timeMillis;
  58.  
  59.             try{
  60.                 this.sleep(waitTime);
  61.             }catch(Exception e){}
  62.  
  63.             totalTime += System.nanoTime()-startTime;
  64.             frameCount++;
  65.             if(frameCount == FPS)
  66.             {
  67.                 averageFPS = 1000/((totalTime/frameCount)/1000000);
  68.                 frameCount =0;
  69.                 totalTime = 0;
  70.                 System.out.println(averageFPS);
  71.             }
  72.         }
  73.     }
  74.     public void setRunning(boolean b)
  75.     {
  76.         running=b;
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement