Android游戏开发2种FPS 实现比较
2009-12-18 18:18
465 查看
1.
private boolean drawall=false;
private RefreshHandler mRedrawHandler = new RefreshHandler();
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
KetrisCanvas.this.update();
KetrisCanvas.this.invalidate();
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
long mLastMove=0;
long mMoveDelay=30;
public void update() {
long now = System.currentTimeMillis();
if (now - mLastMove > mMoveDelay) {
//gameLogic(); 这里是游戏逻辑
mLastMove = now;
}
mRedrawHandler.sleep(mMoveDelay);
}
public void onDraw(Canvas canvas)
{super.onDraw(canvas);
this.paint(); //这里是绘制到缓冲屏幕
canvas.drawBitmap(g.offs, 0, 0, g.p);
}
在适当位置执行update();
2.
public class KetrisCanvas extends SurfaceView implements SurfaceHolder.Callback
{
在构造方法完成 下面2句
holder = this.getHolder();//获取holder
holder.addCallback(this);
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
Thread t;
boolean isrun=true;
final SurfaceHolder holder;
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
t=new Thread(){
public void run()
{ while(isrun)
{
long start=System.currentTimeMillis();
Canvas canvas=KetrisCanvas.this.holder.lockCanvas(null);
//这里完成游戏逻辑
paint();//这里是屏幕绘制
canvas.drawBitmap(g.offs, 0, 0,null );
KetrisCanvas.this.holder.unlockCanvasAndPost(canvas);
long end=System.currentTimeMillis();
if(200>end-start)
{
try{Thread.sleep(200-(end-start));}catch(Exception e){}
}
}
}
};
t.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
if(t!=null)
{ isrun=false;
}
}
//////////////
回家了没时间详细解释,有问题留言
private boolean drawall=false;
private RefreshHandler mRedrawHandler = new RefreshHandler();
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
KetrisCanvas.this.update();
KetrisCanvas.this.invalidate();
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
long mLastMove=0;
long mMoveDelay=30;
public void update() {
long now = System.currentTimeMillis();
if (now - mLastMove > mMoveDelay) {
//gameLogic(); 这里是游戏逻辑
mLastMove = now;
}
mRedrawHandler.sleep(mMoveDelay);
}
public void onDraw(Canvas canvas)
{super.onDraw(canvas);
this.paint(); //这里是绘制到缓冲屏幕
canvas.drawBitmap(g.offs, 0, 0, g.p);
}
在适当位置执行update();
2.
public class KetrisCanvas extends SurfaceView implements SurfaceHolder.Callback
{
在构造方法完成 下面2句
holder = this.getHolder();//获取holder
holder.addCallback(this);
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
Thread t;
boolean isrun=true;
final SurfaceHolder holder;
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
t=new Thread(){
public void run()
{ while(isrun)
{
long start=System.currentTimeMillis();
Canvas canvas=KetrisCanvas.this.holder.lockCanvas(null);
//这里完成游戏逻辑
paint();//这里是屏幕绘制
canvas.drawBitmap(g.offs, 0, 0,null );
KetrisCanvas.this.holder.unlockCanvasAndPost(canvas);
long end=System.currentTimeMillis();
if(200>end-start)
{
try{Thread.sleep(200-(end-start));}catch(Exception e){}
}
}
}
};
t.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
if(t!=null)
{ isrun=false;
}
}
//////////////
回家了没时间详细解释,有问题留言
相关文章推荐
- Android游戏开发2种FPS 实现比较
- Android游戏开发教程之十六:怎样实现图像渐变特效
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- Android游戏开发之使用AnimationDrable实现Frame动画
- Android开发实现的简单五子棋游戏示例
- android开发 自定义view实现黑白棋子游戏
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之开发游戏界面(二)
- Android游戏开发之切换游戏场景特效的实现 (十九)
- Android游戏开发之小球重力感应实现
- Android游戏开发学习②焰火绽放效果实现方法
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之开发游戏界面(二)
- Android应用程序开发教程:实现一个功能比较完善的登录对话框
- 【Android游戏开发二十二】(图文详解)游戏中灵活实现动画播放!简述J2me的游戏类库与Android游戏开发!
- Android游戏开发教程之十五:如何实现异步音乐播放
- Android游戏开发中加速度传感器的实现
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 【Android 应用开发】Android游戏音效实现
- Android游戏开发测量每秒帧数 Frames Per Second (FPS)