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

Android游戏开发之SurfaceView动画

 2010-09-10 01:09:00 来源:WEB开发网   
核心提示:}public void surfaceDestroyed(SurfaceHolder arg0) {// TODO Auto-generated method stub}}这里我们有看到了一个新的类SurfaceHolder,我们权且把它当作一个Surface 的控制器,Android游戏开发之SurfaceView

}

public void surfaceDestroyed(SurfaceHolder arg0) {

// TODO Auto-generated method stub

}

}

这里我们有看到了一个新的类SurfaceHolder,我们权且把它当作一个Surface 的控制器,用

它来操作Surface。因为我们现在还不需要直接操作Surface,所以我们不做深入讲解。而唯

一要使用的是SurfaceHolder.addCallback,即为SurfaceHolder 添加回调函数。原因前面我已

经说明了,方法如下:

public GameView(Context context) {

super(context);

// TODO Auto-generated constructor stub

getHolder().addCallback(this);

}

现在我们可以运行一下,跟第一次使用View 一样,界面上什么也没有。因为我们还没有编

写绘图的代码嘛。

前面说过,我们之所以使用SurfaceView 代替View,是因为SurfaceView 可以在主线程之外

的线程中进行绘图操作,从而提高界面的反应速度。下面我们要做的就是创建一个用来绘图

的线程。不过在这之前我们可以先了解一些关于游戏循环的知识:

我们知道,一般的应用程序是用户驱动的,就是用户操作了,程序再来响应。而我们的游戏

呢,不管用户有没有操作,都会有一些变化,最明显的就是npc 会移动、发生世界事件等。

因此,我们可以说,游戏程序在一个无限循环当中,我们就把它叫做游戏循环。那么在游戏

循环中要做哪些工作呢?让我们用一个流程图来说明游戏循环的过程:

获取用户输入

移动主角

移动NPC 和子弹

碰撞检测

产生世界事件

这只是我们假设的流程,不同的游戏肯定会都有些变化。而且细节上会有更多的差别。

了解了游戏循环,下面的工作就是建立一个线程,线程中包含一个游戏循环,在游戏循环中

更新游戏的各种数据,并根据这些数据将游戏画面绘制在Surface 上最终显示给玩家。

创建线程的方法很简单,我们不需要知道Thread 的很多高级特性。只需要知道,在线程中

完成具体的工作需要重载run()函数。线程通过start()函数启动。然后就会执行run()函数中

的内容,run()函数执行结束后线程就会终止。因此我们将游戏循环放在run()函数中。通过

上一页  1 2 3 4  下一页

Tags:Android 游戏 开发

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