加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx进阶学习之CCEGLView

发布时间:2020-12-14 19:42:40 所属栏目:百科 来源:网络整理
导读:继承关系 CCEGLView- CCEGLViewProtocol CCEGLView是窗口,在不同平台上有不同的实现,而CCEGLViewProtocol是CCEGLView定义的接口,所以学习CCEGLView,主要是要学习CCEGLViewProtocol中定义的接口。 类主要成员 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,float ys[]);

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

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

触摸处理函数,可以重载


static CCEGLView* sharedOpenGLView();

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

[cpp] view plain copy
  1. CCEGLView*CCEGLView::sharedOpenGLView()
  2. {
  3. if(s_pEglView==NULL)
  4. {
  5. s_pEglView=newCCEGLView();
  6. if(!s_pEglView->Create())
  7. deletes_pEglView;
  8. s_pEglView=NULL;
  9. }
  10. }
  11. returns_pEglView;
  12. }
从代码中可以看到,单例唯一的对象保存在s_pEglView中。


总结

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

1)坐标和缩放管理

2)画图工具

3)按键事件

4)输入法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读