zoukankan      html  css  js  c++  java
  • cocos2dx进阶学习之CCEGLView

    继承关系

    CCEGLView-> CCEGLViewProtocol

    CCEGLView是窗口,在不同平台上有不同的实现,而CCEGLViewProtocol是CCEGLView定义的接口,所以学习CCEGLView,主要是要学习CCEGLViewProtocol中定义的接口。


    类主要成员

    CCEGLView();

    构造函数,初始化所有成员变量。


    virtual void end();

    删除窗口,做窗口清理工作


    virtual bool    isOpenGLReady();

    判断是否可以绘图


    virtual void    swapBuffers();

    交换buffer


    virtual void    setIMEKeyboardState(bool bOpen)

    设置输入法状态


    virtual void setFrameSize(float width, float height);

    virtual const CCSize& getFrameSize() const;

    设置和获取窗口大小


    virtual CCSize getVisibleSize() const

    virtual CCPoint getVisibleOrigin() const

    获取可见区域的原点和大小


    virtual void setDesignResolutionSize(float width, float height, ResolutionPolicy resolutionPolicy);

    virtual const CCSize&  getDesignResolutionSize() const;

    设置设计的size,当需要适配多种设备时,可以用这个函数定义逻辑坐标,cocos2dx会自动将逻辑坐标转化成实际坐标

    这样一样的代码可以适配各种设备分辨率。


    virtual void setTouchDelegate(EGLTouchDelegate * pDelegate);

    设置触摸代理,触摸代理有虚函数处理触摸事件,我们需要重写触摸处理虚函数即可,一般的实现是在CCLayer中


    virtual void handleTouchesBegin(int num, int ids[], float xs[], float ys[]);

    virtual void handleTouchesMove(int num, int ids[], float xs[], float ys[]);

    virtual void handleTouchesEnd(int num, int ids[], float xs[], float ys[]);

    virtual void handleTouchesCancel(int num, int ids[], float xs[], float ys[]);

    触摸处理函数,可以重载


    static CCEGLView* sharedOpenGLView();

    获得单例的窗口指针,如果没有则创建,源代码如下:

    CCEGLView* CCEGLView::sharedOpenGLView()
    {
      
        if (s_pEglView == NULL)
        {
            s_pEglView = new CCEGLView();
    		if(!s_pEglView->Create())
    		{
    			delete s_pEglView;
    			s_pEglView = NULL;
    		}
        }
    
        return s_pEglView;
    }
    从代码中可以看到,单例唯一的对象保存在s_pEglView中。


    总结

    CCEGLView是显示窗口,负责窗口级别的功能管理和实现,包括:

    1)坐标和缩放管理

    2)画图工具

    3)按键事件

    4)输入法


  • 相关阅读:
    隐藏虚拟网卡
    Eclipse3.2编码选中对象着色
    PHP里的字符串定义小技巧汇总
    【原创】交互型网页防止IP欺骗的技巧
    VS2005的报错让我“二”了一把
    【原创】利用PHP5的__autoload代替繁琐低效的的外部文件包含方式
    关于WebDataWindow.Net的一些开发小细节
    PHP效率损失操作汇总
    动态添加按钮及关联方法(带参数)
    GridView中模版列使用RowCommand事件如何得到当前列的行索引或记录ID
  • 原文地址:https://www.cnblogs.com/new0801/p/6177230.html
Copyright © 2011-2022 走看看