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程序设计有所帮助。