Home » 未分类 » 关于用Surface绘图类实现的绘图功能,以至于实现简单的2D游戏~

关于用Surface绘图类实现的绘图功能,以至于实现简单的2D游戏~

第一步:

首先是我们创建一个Android项目,建立建立之后我们会得到一个activity类,之后我们再建立一个需要实现的绘图类,比如GameSurfaceView类

第二步:

编写GameSurfaceView使其继承制SurfaceView并实现借口 SurfaceHolder同时还有实现回调函数 SurfaceHolder.Callback也就是

public class GameSurfaceView extends SurfaceView implements SurfaceHolder.Callback

第三步:系统会提示创建必须实现的三个方法一个是在surface的大小发生改变时激发surfaceChanged()、在surface创建时激发surfaceCreated、在surface销毁时激发

第四部:

我们就可以可以在类GameSurfaceView类里面写我们需要定义的一些对象如:SurfaceHolder mSurfaceHolder; 构造函数实现初始化父级构造函数super(context);之后就是可以实例化我们第的对象

// 实例化SurfaceHolder
mSurfaceHolder = this.getHolder();

// 添加回调
mSurfaceHolder.addCallback(this);
this.setFocusable(true);
//从图片资源中装载图片资源

mBitQQ=((BitmapDrawable)getResources().getDrawable(R.drawable.background2)).getBitmap();

第五步:

实例化完后,在surfaceCreated函数里面建立一个线程实现类的线程的开始new Thread(this).start();

第六步:

就是重写我们的线程函数RUN();在run函数里面,我们就可以控制循环的情况,

while (mbLoop)
{
try
{
Thread.sleep(200);
}
catch (Exception e)
{

}
synchronized( mSurfaceHolder )
{
Draw();
}

}

然后在缓冲实现我们的图像的绘制的缓冲以及调用我们的绘制函数

第七步:

实现我们的Draw()函数

锁定一个画布,

//锁定画布,得到canvas
Canvas canvas= mSurfaceHolder.lockCanvas();

之后就是建立一个画笔Paint mPaint = new Paint();

设置画笔的颜色和形状

mPaint.setColor(Color.BLACK);
//绘制矩形–清屏作用
canvas.drawRect(0, 0, 320, 480, mPaint);

当然我们还可以绘制我们的图片

/* 在屏幕(0,0)处绘制图片mBitQQ */
GameSurfaceView.drawImage(canvas, mBitQQ, 0, 0);
// 绘制后解锁,绘制后必须解锁才能显示
mSurfaceHolder.unlockCanvasAndPost(canvas);

绘制后要记得解锁画布才会显示

最后是关于DrawImage()我们写成函数以提高封装性

private static void drawImage(Canvas canvas, Bitmap mBitQQ2, int x, int y) {
// TODO Auto-generated method stub
canvas.drawBitmap(mBitQQ2, x, y, null);
}

第八步:

我们在我们的activity里面的onCreate设置我们的类的一个引用(activity里面都可以用的,也即在类下面的属性),建立一个对象mGameSurfaceView = new GameSurfaceView(this);

之后就可以设置我们显示

//设置显示GameSurfaceView视图
setContentView(mGameSurfaceView);

到这里就实现了我们的一张图片的绘制功能,也就是用SurfaceView实现我们的绘图功能,以便今后实现游戏的图画的绘制。

当然希望大家今后都可以成为技术大牛,做出自己的游戏,技术持续更新中~~

 

This entry was posted in 未分类. Bookmark the permalink.