Android实现完整游戏循环的方法
本文实例讲述了Android实现完整游戏循环的方法。分享给大家供大家参考。具体如下:
1.DroidzActivity.java:
packagenet.obviam.droidz;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.Window;
importandroid.view.WindowManager;
publicclassDroidzActivityextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
privatestaticfinalStringTAG=DroidzActivity.class.getSimpleName();
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//requestingtoturnthetitleOFF
requestWindowFeature(Window.FEATURE_NO_TITLE);
//makingitfullscreen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
//setourMainGamePanelastheView
setContentView(newMainGamePanel(this));
Log.d(TAG,"Viewadded");
}
@Override
protectedvoidonDestroy(){
Log.d(TAG,"Destroying...");
super.onDestroy();
}
@Override
protectedvoidonStop(){
Log.d(TAG,"Stopping...");
super.onStop();
}
}
2.MainThread.java:
packagenet.obviam.droidz;
importandroid.util.Log;
importandroid.view.SurfaceHolder;
publicclassMainThreadextendsThread{
privatestaticfinalStringTAG=MainThread.class.getSimpleName();
privateSurfaceHoldersurfaceHolder;
privateMainGamePanelgamePanel;
privatebooleanrunning;
publicvoidsetRunning(booleanrunning){
this.running=running;
}
publicMainThread(SurfaceHoldersurfaceHolder,MainGamePanelgamePanel){
super();
this.surfaceHolder=surfaceHolder;
this.gamePanel=gamePanel;
}
@Override
publicvoidrun(){
longtickCount=0L;
Log.d(TAG,"Startinggameloop");
while(running){
tickCount++;
//updategamestate
//renderstatetothescreen
}
Log.d(TAG,"Gameloopexecuted"+tickCount+"times");
}
}
3.MainGamePanel.java:
packagenet.obviam.droidz;
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.view.MotionEvent;
importandroid.view.SurfaceHolder;
importandroid.view.SurfaceView;
publicclassMainGamePanelextendsSurfaceViewimplements
SurfaceHolder.Callback{
privateMainThreadthread;
publicMainGamePanel(Contextcontext){
super(context);
getHolder().addCallback(this);
//createthegameloopthread
thread=newMainThread();
setFocusable(true);
}
@Override
publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth,intheight){
}
@Override
publicvoidsurfaceCreated(SurfaceHolderholder){
thread.setRunning(true);
thread.start();
}
@Override
publicvoidsurfaceDestroyed(SurfaceHolderholder){
booleanretry=true;
while(retry){
try{
thread.join();
retry=false;
}catch(InterruptedExceptione){
//tryagainshuttingdownthethread
}
}
}
@Override
publicbooleanonTouchEvent(MotionEventevent){
returnsuper.onTouchEvent(event);
}
@Override
protectedvoidonDraw(Canvascanvas){
}
}
希望本文所述对大家的Android程序设计有所帮助。