• SurfaceView


    引用:http://doyee.blog.163.com/blog/static/11563172009102211210787/

    在用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);
    //更新屏幕显示内容
    }

    }
    }
    };
     
     
     
     
     
  • 相关阅读:
    jquery弹出窗口
    js定时器
    jquery树形菜单
    用convert转换参数对比
    jquery常用例子!
    JS总结
    上传简历实现只浏览不下载的效果
    区块链入门(1):搭建(Ubuntu系统)Truffle v3.2.1 开发和测试环境
    URL Routing组件是如何与ASP.NET MVC框架组合起来的
    接单网站收集
  • 原文地址:https://www.cnblogs.com/sode/p/2419811.html
Copyright © 2020-2023  润新知