WEB开发网
开发学院手机开发Android 开发 Android 开发中的游戏开发使用 View 还是 Surface... 阅读

Android 开发中的游戏开发使用 View 还是 SurfaceView

 2010-02-27 07:25:00 来源:WEB开发网   
核心提示:如何在Android平台上开发游戏,又如何使Android开发效率更高?我们是选择Android开发平台中的View还是SurfaceView呢?在Android中开发游戏,Android 开发中的游戏开发使用 View 还是 SurfaceView,一般来说,或想写一个复杂一点的游戏,public void surf

如何在Android平台上开发游戏,又如何使Android开发效率更高?我们是选择Android开发平台中的View还是SurfaceView呢?

Android中开发游戏,一般来说,或想写一个复杂一点的游戏,是必须用到SurfaceView来开发的。

经过这一阵子对android的研究,我找到了在android中游戏开发的误区,不要老想着用Layout和view去实现,不要将某个游戏

中的对象做成一个组件来处理。应该尽量想着在Canvas(画布)中画出游戏戏中的背景、人物、动画等...

SurfaceView提供直接访问一个可画图的界面,可以控制在界面顶部的子视图层。SurfaceView是提供给需要直接画像素而不是使用

窗体部件的应用使用的。Android图形系统中一个重要的概念和线索是surface。View及其子类(如TextView, Button)

要画在surface上。每个surface创建一个Canvas对象(但属性时常改变),用来管理view在surface上的绘图操作,如画点画线。

还要注意的是,使用它的时候,一般都是出现在最顶层的:The view hierarchy will take care of correctly compositing

with the Surface any siblings of the SurfaceView that would normally appear on top of it.

使用的SurfaceView的时候,一般情况下还要对其进行创建,销毁,改变时的情况进行监视,这就要用到SurfaceHolder.Callback.

class BBatt extends SurfaceView implements SurfaceHolder.Callback {

public void surfaceChanged(SurfaceHolder holder,int format,int width,int height){}

//看其名知其义,在surface的大小发生改变时激发

public void surfaceCreated(SurfaceHolder holder){}

//同上,在创建时激发,一般在这里调用画图的线程。

public void surfaceDestroyed(SurfaceHolder holder) {}

//同上,销毁时激发,一般在这里将画图的线程停止、释放。

}

例子:

public class BBatt extends SurfaceView implements

SurfaceHolder.Callback, OnKeyListener {

private BFairy bFairy;

private DrawThread drawThread;

public BBatt(Context context) {

super(context);

this.setLayoutParams(

new ViewGroup.LayoutParams(

1 2 3 4  下一页

Tags:Android 开发 游戏

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