1.orm
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();
}ci
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);
}rem
在适当位置执行update();get
2.it
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;
}
}
喜欢开放游戏的朋友加我好友!