GameView.java
上传用户:zjhndq
上传日期:2021-05-06
资源大小:26k
文件大小:2k
源码类别:

android开发

开发平台:

Unix_Linux

  1. package com.guomin.simEngin;
  2. import android.content.Context;
  3. import android.graphics.Canvas;
  4. import android.graphics.Color;
  5. import android.graphics.Paint;
  6. import android.os.Handler;
  7. import android.os.Message;
  8. import android.view.KeyEvent;
  9. import android.view.View;
  10. public class GameView extends View {
  11. Thread t1;
  12. long tag=0;
  13. int tagX = 100,tagY = 100;
  14.     private long mMoveDelay = 300;
  15.     private long mLastMove;
  16. Paint paint = new Paint();
  17. GameView(Context context){
  18.      super(context);
  19.         setFocusable(true);
  20.         update();
  21. }
  22.     //还不知道原理的循环????
  23.     private RefreshHandler mRedrawHandler = new RefreshHandler();
  24.     
  25.     class RefreshHandler extends Handler {
  26.         @Override
  27.         public void handleMessage(Message msg) {
  28.          GameView.this.update();
  29.             GameView.this.invalidate();
  30.         }
  31.         public void sleep(long delayMillis) {
  32.          this.removeMessages(0);
  33.             sendMessageDelayed(obtainMessage(0), delayMillis);
  34.         }
  35.     };
  36.     
  37.     //游戏循环
  38.     public void update() {
  39.         long now = System.currentTimeMillis();
  40.         if (now - mLastMove > mMoveDelay) {
  41.             mLastMove = now;
  42.             //处理
  43.             tag++;
  44.         }
  45.         mRedrawHandler.sleep(mMoveDelay);
  46.     }
  47.     public boolean onKeyDown(int keyCode, KeyEvent msg) {
  48.         if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
  49.          tagY--;
  50.          invalidate();
  51.             return (true);
  52.         }
  53.         if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
  54.          tagY++;
  55.          invalidate();
  56.             return (true);
  57.         }
  58.         if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
  59.          tagX--;
  60.          invalidate();
  61.             return (true);
  62.         }
  63.         if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
  64.          tagX++;
  65.          invalidate();
  66.             return (true);
  67.         }
  68.         if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER||keyCode == KeyEvent.KEYCODE_ENTER) {
  69.          invalidate();
  70.             return (true);
  71.         }
  72.         
  73.         return super.onKeyDown(keyCode, msg);
  74.     }
  75.     
  76. public void onDraw(Canvas canvas){
  77. paint.setColor(Color.YELLOW);
  78. canvas.drawText(tag+"", tagX, tagY, paint);
  79. }
  80. }