一个android游戏框架

来源:互联网 发布:仿微信红包源码 编辑:程序博客网 时间:2024/06/04 23:25

1. 继承SurfaceView类, 实现Runnable和Callback(针对SurfaceHolder)接口

     继承自SurfaceView, 并实现runnable interface, 在surfaceCreated()内new thread()(以this为参数)并初始化各种参数(因为此处才可以获得屏幕尺寸)
   资源加载可以放在类初始化函数中


2. 绘图
  SurfaceView虽然从View继承得到一个draw(Canvas)函数, 但不会自动调用它, 一般的对策是: 自己
  实现一个绘制函数, 在需要的时候调用它. 三个需要绘制的地方
  a) surfaceCreated()内
  b) 响应输入后
  c) Run()内

  绘制函数内通过SurfaceView::SurfaceHolder::lockCanvas()获得canvas, 绘制完毕后记得unlockCanvas()


3. 响应输入

  重载继承自View的相关输入函数即可, 比如onTouchEvent()


4. Run()函数: 独立的现成
  Run内主要做三件事
  a) 绘制: 调用绘制函数完成
  b) 游戏逻辑: 各种后台计算(注意这里似乎不是多线程, 所以逻辑不要太复杂)

  c) 帧率控制: 上述两步执行完后, 如果耗时是t, 而期望的帧率是F, 如果t > 1/F则不用控制帧率, 否则调用sleep()函数等待一段时间1/F - t 保证每一轮Run()的执行时间近似等于1/F

PS: android设计中对多线程有一个限制: UI必须在UI线程中处理, 而不能在子线程中处理

0 0
原创粉丝点击