WEB开发网
开发学院手机开发Android 开发 Android游戏开发之SurfaceView动画 阅读

Android游戏开发之SurfaceView动画

 2010-09-10 01:09:00 来源:WEB开发网   
核心提示:前面介绍的内容,还是比较简单的,Android游戏开发之SurfaceView动画,应用这些知识,可以完成一些非实时游戏,我们直接让GameView 类实现Callback 接口,使程序更简洁一些,比如井字棋等,或者一些画面刷新不是很频繁、实时性不强的游戏

前面介绍的内容,还是比较简单的,应用这些知识,可以完成一些非实时游戏,比如井字棋

等,或者一些画面刷新不是很频繁、实时性不强的游戏,比如我们前面做的扫雷。但是我们

的目标是坦克大战,对操作的实时性要求比较高,更有很多的NPC 需要处理,绘图的工作

量也很大,所以我们要用一个新的视图类SurfaceView 代替View 来完成显示工作。

SurfaceView 与View 有一些不同,但是我们只用其中的一个特性:在主线程之外的线程中向

屏幕上绘图。这样就可以避免在画图任务繁重的时候造成主线程阻塞,从而提高程序的反应

速度。

首先让我们重新定义一个GameView 类, 让他继承自SurfaceView , 并且要实现

SurfaceHolder.Callback 接口。为什么要实现Callback 接口呢?因为使用SurfaceView 有一个

原则,所有的绘图工作必须得在Surface 被创建之后才能开始(Surface—表面,这个概念在

图形编程中常常被提到。基本上我们可以把它当作显存的一个映射,写入到Surface 的内容

可以被直接复制到显存从而显示出来,这使得显示速度会非常快),而在Surface 被销毁之前

必须结束。所以Callback 中的surfaceCreated 和surfaceDestroyed 就成了绘图处理代码的边界。

我们直接让GameView 类实现Callback 接口,使程序更简洁一些。

GameView 被创建,并补充了构造函数之后就是这个样子(创建类和添加构造函数的方法前

面有介绍哦)

package org.yexing.android.games.tank;

import android.content.Context;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.SurfaceHolder.Callback;

public class GameView extends SurfaceView implements Callback {

public GameView(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2,

int arg3) {

// TODO Auto-generated method stub

}

public void surfaceCreated(SurfaceHolder arg0) {

// TODO Auto-generated method stub

1 2 3 4  下一页

Tags:Android 游戏 开发

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