软件编程
位置:首页>> 软件编程>> Android编程>> Android实现完整游戏循环的方法

Android实现完整游戏循环的方法

作者:红薯  发布时间:2023-12-26 16:40:06 

标签:Android,游戏,循环

本文实例讲述了Android实现完整游戏循环的方法。分享给大家供大家参考。具体如下:

1. DroidzActivity.java:


package net.obviam.droidz;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
public class DroidzActivity extends Activity {
 /** Called when the activity is first created. */
private static final String TAG = DroidzActivity.class.getSimpleName();
 @Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   // requesting to turn the title OFF
   requestWindowFeature(Window.FEATURE_NO_TITLE);
   // making it full screen
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
   // set our MainGamePanel as the View
   setContentView(new MainGamePanel(this));
   Log.d(TAG, "View added");
 }
@Override
protected void onDestroy() {
Log.d(TAG, "Destroying...");
super.onDestroy();
}
@Override
protected void onStop() {
Log.d(TAG, "Stopping...");
super.onStop();
}
}

2. MainThread.java:


package net.obviam.droidz;
import android.util.Log;
import android.view.SurfaceHolder;
public class MainThread extends Thread {
private static final String TAG = MainThread.class.getSimpleName();
private SurfaceHolder surfaceHolder;
private MainGamePanel gamePanel;
private boolean running;
public void setRunning(boolean running) {
this.running = running;
}
public MainThread(SurfaceHolder surfaceHolder, MainGamePanel gamePanel) {
super();
this.surfaceHolder = surfaceHolder;
this.gamePanel = gamePanel;
}
@Override
public void run() {
long tickCount = 0L;
Log.d(TAG, "Starting game loop");
while (running) {
 tickCount++;
 // update game state
 // render state to the screen
}
Log.d(TAG, "Game loop executed " + tickCount + " times");
}
}

3. MainGamePanel.java:


package net.obviam.droidz;
import android.content.Context;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class MainGamePanel extends SurfaceView implements
SurfaceHolder.Callback {
private MainThread thread;
public MainGamePanel(Context context) {
super(context);
getHolder().addCallback(this);
// create the game loop thread
thread = new MainThread();
setFocusable(true);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
thread.setRunning(true);
thread.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
while (retry) {
 try {
 thread.join();
 retry = false;
 } catch (InterruptedException e) {
 // try again shutting down the thread
 }
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
@Override
protected void onDraw(Canvas canvas) {
}
}

希望本文所述对大家的Android程序设计有所帮助。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com