博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SurfaceView
阅读量:6300 次
发布时间:2019-06-22

本文共 1670 字,大约阅读时间需要 5 分钟。

引用:

在用SurfaceView进行游戏开发过程中,用到SurfaceHolder来处理它的Canvas上画的效果和动画是必不可少的。用于控制表面,大小,像素等。

Abstract interface to someone holding a display surface. Allows you to control the surface size and format, 
edit the pixels in the surface, and monitor changes to the surface. This interface is typically available 
through the SurfaceView class. 
其中特别要注意以下的几个函数:
abstract void addCallback(SurfaceHolder.Callback callback);
// 给SurfaceView当前的持有者一个回调对象。
abstract Canvas lockCanvas();
// 锁定画布,一般在锁定后就可以通过其返回的画布对象Canvas,在其上面画图等操作了。
abstract Canvas lockCanvas(Rect dirty);
// 锁定画布的某个区域进行画图等..因为画完图后,会调用下面的unlockCanvasAndPost来改变显示内容。
// 相对部分内存要求比较高的游戏来说,可以不用重画dirty外的其它区域的像素,可以提高速度。
abstract void unlockCanvasAndPost(Canvas canvas);
// 结束锁定画图,并提交改变。

例子:

class DrawThread extends Thread {
private SurfaceHolder holder; private boolean running = true; protected DrawThread(SurfaceHolder holder) {this.holder = holder;} protected void doStop() { running = false; } public void run() {
Canvas c = null; while( running ) {
c = holder.lockCanvas(null); // 锁定整个画布,在内存要求比较高的情况下,建议参数不要为null try {
synchronized(holder) {
bGrid.drawGrid(c);//画游戏中的网格 BBoom.drawBooms(c, booms); //画游戏中的炸弹 bFairy.drawFairy(c);//画游戏中的主角 // 画的内容是z轴的,后画的会覆盖前面画的。 } } catch(Exception ex) {} finally {
holder.unlockCanvasAndPost(c); //更新屏幕显示内容 } } } };
 
 
 
 
 

转载地址:http://fagta.baihongyu.com/

你可能感兴趣的文章
148. Sort List
查看>>
Design Patterns - Interpreter Pattern(译)
查看>>
JavaScript类型系统详解
查看>>
git 提交vendor目录至项目
查看>>
touch事件小结
查看>>
Let’s configure DRBD on Ubuntu Server 14.04
查看>>
SQLAlchemy入门(一)
查看>>
CoreData初次实践(一)
查看>>
【07】把 Elasticsearch 当数据库使:聚合后排序
查看>>
本地开发——TCP Proxy 解决 API 必须绑定 IP 白名单才能访问的问题
查看>>
国外 服务器,阿里云海外服务器-海外节点云服务器全线2折起挺好 ...
查看>>
12月19日云栖精选夜读 | 外行人都能看得懂的机器学习,错过了血亏! ...
查看>>
马云也谈996,对开发者真的是一福利吗?
查看>>
PostgreSQL技术周刊第17期:PostgreSQL用户应掌握的高级SQL特性 ...
查看>>
Linux命令操作大全
查看>>
使用python3抓取pinpoint应用信息入库
查看>>
Kubernetes 准入控制 Admission Controller 介绍
查看>>
Redis命令——字符串(String)
查看>>
linux yum清缓存脚本
查看>>
Windows10 bypassUAC绕过用户账户控制
查看>>