cocos2dx进阶学习之CCEGLView

原创 2014年01月21日 15:36:06

继承关系

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)输入法


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yincheng01/article/details/18569413

Google创始人的早期“变态”照片;-)

Google创始人的早期“变态”照片;-)这是Google创始人之一Sergey Brin还在斯坦福大学学习时留在他自己网站上的一张照片,白色连衣裙加上长发和娇态,的确很“变态”;-)。尽管现在已经没...
  • superyan
  • superyan
  • 2004-04-09 09:25:00
  • 1942

Cocos2d-x学习(二十一):cocos2d-x引擎结构

在不同平台下,cocos2d-x的入口是不一样的,在win32平台,程序是从_tWinMain()开始的,可以在每一个cocos2d-x的程序中的main.cpp中找到。 1.程序入口 (...
  • oneRain88
  • oneRain88
  • 2012-12-08 10:53:53
  • 13092

学习心得 CCEGLView::sharedOpenGLView()在3.x中的替换问题

今天在写项目的时候遇到了如下问题 解决方法如图中的代码
  • qq_30392565
  • qq_30392565
  • 2016-07-15 19:33:08
  • 1576

【玩转cocos2d-x之三】cocos2d-x游戏是怎么跑起来的

虽然cocos2d-x v3.0 alpha版已经出来了,也改进了不少,有兴趣的可以去尝尝鲜。因为后面可能还会配合cocoStudio写一下博客,而现在v1.0.0.0版本需要配合cocos2d-x ...
  • jackyvincefu
  • jackyvincefu
  • 2013-10-10 08:14:53
  • 9990

Cocos2dx 3.1.1 之 修改屏幕大小

在cocos2dx 2.x版本中,修改屏幕大小的代码在main.cpp中:
  • Pancwyz
  • Pancwyz
  • 2014-08-05 10:06:08
  • 2010

Cocos2d-x中的CCEGLView.mm文件解析

CCEGLView是窗口,负责窗口级别的功能管理和实现,在不同的平台上有不同的实现,它继承自CCEGLViewProtocol接口。...
  • u012729522
  • u012729522
  • 2016-11-14 16:41:07
  • 238

cocos2d-x“无法打开源文件”

这一周开始学习cocos2d-x,刚开始就碰到了一些问题,新建完工程后,自己给工程添加新的文件,有两种方式: 第一种是使用VS的类向导,让软件帮我们把需要添加的类加入到工程,可以一次把头文件和cp...
  • shiwazone
  • shiwazone
  • 2015-05-21 23:02:33
  • 2532

定制cocos2d的GLView

cocos2d功能强大,但是却不好整合进各种gdi和MFC程序中,有些实现是改cocos2d的项目源代码,这样的话,后续升级版本麻烦些,本文提供的方法可以不修改cocos2d源码...
  • robothn
  • robothn
  • 2017-01-13 16:42:59
  • 402

Cocos2dx 事件响应机制(1): GLView

CCGLView.cpp: 部分代码注释如下,由于作者是在windows下阅读的代码,因此这里的CCGLView的路径为【 cocos2d\cocos\platform\desktop\CCGLV...
  • XIANG__jiangsu
  • XIANG__jiangsu
  • 2017-05-25 17:13:54
  • 535

Cocos设计分辨率(glView)

在AppDelegate::applicationDidFinishLaunching() 中有glview->setFrameSize(480,320); 以及glview->setDesignRe...
  • Samgenius
  • Samgenius
  • 2016-03-27 10:41:06
  • 649
收藏助手
不良信息举报
您举报文章:cocos2dx进阶学习之CCEGLView
举报原因:
原因补充:

(最多只允许输入30个字)