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程序设计有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下