打飞机游戏效果

游戏中的二级缓存
android之surfaceView学习:
制作游戏时,为了时刻渲染游戏场景,涉及到一个实时画图的问题了,对于实时更新UI这个问题,android的UI更新都需要在主线程中更新,但是如果将一个实时绘图的操作放在主线程,必定会出现阻塞主线程的问题,即便是不阻塞主线程,也会降低程序运行的速度
surfaceView提供了UI线程。可以自己更新UI,因此,这样我们在surfaceView中进行实时的绘画,然后通过更改其中的绘画的数据,既可以实现我们想要的实时的更新UI的这个问题了,并且消耗较小的资源
surfaceCreated:创建时需要执行的操作
surfaceView:大小改变时需要执行的操作
surfaceDestroyed:销毁时进行的操作
//视图创建时通知
public void surfaceCreated(SurfaceHolder holder) {
this.holder = holder;
runState = true;
//视图创建时开始线程
new Thread(this).start();
}
//界面发生改变的时候通知
public void surfaceChanged(SurfaceHolder holder, int i, int i1, int i2) {
}
//销毁时通知
public void surfaceDestroyed(SurfaceHolder holder) {
runState = false;
}
线程中的方法
public void run() {
Random ran = new Random();
try{
while(true) {
//获得绘画的画布
Canvas canvas = holder.lockCanvas();
Paint p = new Paint();
p.setColor(Color.rgb(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255)));
canvas.drawLine(ran.nextInt(1000),ran.nextInt(1000),ran.nextInt(1000),ran.nextInt(1000),p);
//把绘画好的内容提交上去
holder.unlockCanvasAndPost(canvas);//解锁
Thread.sleep(1000);
}
}catch (Exception e){
}
}
本文介绍使用Android的SurfaceView进行实时绘图,解决游戏开发中UI更新问题,避免主线程阻塞,提高游戏运行效率。通过自定义线程,实现画面的实时更新与资源的有效利用。
575

被折叠的 条评论
为什么被折叠?



