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


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

今天在写项目的时候遇到了如下问题 解决方法如图中的代码

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

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

cocos2dx进阶学习之CCApplication

继承关系CCApplication-> CCApplicationProtocol类主要成员变量static CCApplication * sm_pSharedApplication;静态成员变量,...

Box2D的Edge Shape的碰撞处理

有时候两个body碰撞时需要精确到某条边,所以在创建body的时候需要创建multiFixture,也就是多个fixture的组合。早期Box2D版本中Polygon Shape有setAsEdge方...

远程分支和本地分支的相互创建和跟踪

原文地址:http://hi.baidu.com/lingzhixu/blog/item/4a9b830bb08a329fe850cd5b.html 本地分支的创建 本地分支的来源为执行g...

cocos2d-x游戏开发系列教程-超级玛丽02-代码结构

代码下载链接http://download.csdn.net/detail/yincheng01/6864893解压密码:c.itcast.cn前景回顾上一篇博文提到超级马里奥的游戏效果,大家是否已经...

box2D斜面摩擦力和sprite朝向的兼顾取舍

问题起源: 一般游戏的主角player的b2Body的fixedRotation属性都设置为true,即不能旋转,这样可以保证player在受到物理冲力的时候不会扭来扭去,比如超级玛丽他的人物模型始终...

cocos2dx进阶学习之屏幕适配

背景在学习cocos2dx时,我们在main函数中发现一句代码,#include "main.h" #include "AppDelegate.h" #include "CCEGLView.h" U...

cocos2d-x游戏开发系列教程-超级玛丽01-前言

前言上次用象棋演示了cocos2dx的基本用法,但是对cocos2dx并没有作深入的讨论,这次以超级马里奥的源代码为线索,我们一起来学习超级马里奥的实现,并以一些篇幅来详细讲述遇到的具体问题和具体的类...

cocos2dx3.0 问题集

         1.Failed to allocate memory: 8 (andriod模拟器无法启动)        &...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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