WEB开发网
开发学院手机开发Android 开发 Android 游戏开发 NancyGLines 设计 阅读

Android 游戏开发 NancyGLines 设计

 2010-03-24 05:26:00 来源:WEB开发网   
核心提示:嗯,我使用了自定义的View - GLinesView,Android 游戏开发 NancyGLines 设计(2),在GLinesView的原型是这样的:public class GLinesView extends SurfaceView implements SurfaceHolder.Callback {}在这

嗯,我使用了自定义的View - GLinesView,在GLinesView的原型是这样的:

public class GLinesView extends SurfaceView implements SurfaceHolder.Callback {

}

在这里继承了SurfaceView ,因为SurfaceView 在游戏制作上有一些优势。接着,我参考了Sample里的LunarLander代码,在建立了一个SurfaceView内部线程类,用来处理游戏的逻辑和绘制游戏画面。

public class GLinesView extends SurfaceView implements SurfaceHolder.Callback {

class GLinesThread extends Thread {

public void initGame() {

}

public void setRunning(boolean running) {

mRun = running;

}

@Override

public void run() {

updateCanvas();

}

}

public GLinesView(Context context, AttributeSet attrs) {

super(context, attrs);

SurfaceHolder holder = getHolder();

holder.addCallback(this);

thread = new GLinesThread(holder, context, new Handler() {

@Override

public void handleMessage(Message m) {

mStatusText.setVisibility(m.getData().getInt("viz"));

mStatusText.setText(m.getData().getString("text"));

}

});

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

thread.initGame();

thread.setRunning(true);

thread.start();

}

}

当surfaceCreated事件发生时,触发游戏开始,initGame()做一些游戏的初始设置,setRunning设置游戏的当前状态,start将线程运行起来。

因为我不需要实时的刷新画面,所以,我没有在线程的run方法中使用一个while循环,而只是调用了一个刷新画面的方法updateCanvas();

当用户触摸屏幕时,触发GLinesView 的onTouchEvent方法,因此,添加代码:

@Override

public boolean onTouchEvent(MotionEvent event) {

float x = event.getX();

float y = event.getY();

Tags:Android 游戏 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接