android游戏初步 01 游戏框架
Posted 六道对穿肠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android游戏初步 01 游戏框架相关的知识,希望对你有一定的参考价值。
大致流程: 使用SurfaceView 绘制 在子线程更新UI 让textveiw文本 随着鼠标点击移动 而移动
上代码
自己的surfaceview
public class MySurfaceView extends SurfaceView implements Callback, Runnable
//用于控制SurfaceView
private SurfaceHolder sfh;
//声明一个画笔
private Paint paint;
//文本的坐标
private int textX = 10, textY = 10;
//声明一条线程
private Thread th;
//线程消亡的标识位
private boolean flag;
//声明一个画布
private Canvas canvas;
//声明屏幕的宽高
private int screenW, screenH;
/**
* SurfaceView初始化函数
*/
public MySurfaceView(Context context)
super(context);
//实例SurfaceHolder
sfh = this.getHolder();
//为SurfaceView添加状态监听
sfh.addCallback(this);
//实例一个画笔
paint = new Paint();
//设置画笔颜色为白色
paint.setColor(Color.WHITE);
//设置焦点
setFocusable(true);
/**
* SurfaceView视图创建,响应此函数
*/
@Override
public void surfaceCreated(SurfaceHolder holder)
screenW = this.getWidth();
screenH = this.getHeight();
flag = true;
//实例线程
th = new Thread(this);
//启动线程
th.start();
/**
* 游戏绘图
*/
public void myDraw()
try
canvas = sfh.lockCanvas();
if (canvas != null)
//-----------利用填充矩形的方式,刷屏
绘制矩形
//canvas.drawRect(0,0,this.getWidth(),
//this.getHeight(), paint);
//-----------利用填充画布,刷屏
// canvas.drawColor(Color.BLACK);
//-----------利用填充画布指定的颜色分量,刷屏
canvas.drawRGB(0, 0, 0);
canvas.drawText("Game", textX, textY, paint);
catch (Exception e)
// TODO: handle exception
finally
if (canvas != null)
sfh.unlockCanvasAndPost(canvas);
/**
* 触屏事件监听
*/
@Override
public boolean onTouchEvent(MotionEvent event)
textX = (int) event.getX();
textY = (int) event.getY();
return true;
/**
* 按键事件监听
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
return super.onKeyDown(keyCode, event);
/**
* 游戏逻辑
*/
private void logic()
@Override
public void run()
while (flag)
long start = System.currentTimeMillis();
myDraw();
logic();
long end = System.currentTimeMillis();
try
if (end - start < 50)
Thread.sleep(50 - (end - start));
catch (InterruptedException e)
e.printStackTrace();
/**
* SurfaceView视图状态发生改变,响应此函数
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
/**
* SurfaceView视图消亡时,响应此函数
*/
@Override
public void surfaceDestroyed(SurfaceHolder holder)
flag = false;
在mainactivity 中调用
public class MainActivity extends Activity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
//设置全屏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//显示自定义的SurfaceView视图
setContentView(new MySurfaceView(this));
功能: 随着鼠标左右移动 textview 也随着移动
以上是关于android游戏初步 01 游戏框架的主要内容,如果未能解决你的问题,请参考以下文章
开源java游戏框架libgdx专题-01-libgdx介绍