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


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

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

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

cocos2dx 2.1.4 程序运行脉络解析3—解析CCEGLView

这篇主要是要解决上一篇遗留下的突出问题: 回忆上两篇分析程序运行时有这么几个函数很容易混淆,我按照顺序先一次将他们列出来: main函数: CCEGLView* eglView = CCEGLView...
  • zh4222011990
  • zh4222011990
  • 2013年10月03日 14:24
  • 2870

Cocos2Dx之触控处理-欧阳左至

在上个章节中,我们已经看到了Win 32的消息泵驱动CCDirector在每个帧间隔时间到期后,调用mainLoop。但是对于触控事件,它同样是操作系统上报给应用的事件,我们没有看到它的踪迹。事实上,...
  • Const_Gong
  • Const_Gong
  • 2016年01月09日 00:58
  • 944

Cocos2dx 3.0 过渡篇(十三) action的用法从一个故事说起

本篇博客来自star特530,转载请注明出处。http://blog.csdn.net/start530/article/details/20153367 ------------- 动作到底该怎...
  • xiebaochun
  • xiebaochun
  • 2014年04月15日 17:20
  • 7963

我的Cocos2d-x学习笔记(一)Windows下程序如何开始运行

现在开始学习Cocos2d-x开发手机游戏,做这个笔记记录学习中的一些收获,同时利于复习。利用的Cocos2d-x2.2.6引擎。     每个程序都是有入口函数的,Cocos2d-x也不例外,在Wi...
  • Const_Gong
  • Const_Gong
  • 2015年05月25日 23:20
  • 316

Vue-进阶学习

1、vm(Vue的实例对象)中的data属性存放的数据才是响应式的 var vm = new Vue({  data:{  a:1  }}) // `vm.a` 是响应的 vm.a=20       ...
  • itzhengmaolin
  • itzhengmaolin
  • 2017年07月26日 12:12
  • 235

cocos2dx延时动作DelayTime,自己写一个定时器等

cocos2dx中的定时动作: DelayTime: ①组合动作,先在一个action中放一个函数,然后在延时动作中调用这个action,最后由对象执行这个延时动作 //第一个action,里面放一个...
  • qq_38306233
  • qq_38306233
  • 2017年12月22日 09:58
  • 66

Android进阶学习内容整理

我是个喜欢不断学习新知识,探索新东西的人,无论是对于技术还是生活,我都有着足够的好奇心,我觉得只有这样,人生才会更快乐一些。然而,在学习的过程中,归纳和总结知识,整合资源的能力也是非常重要的。所以,今...
  • pangrongxian
  • pangrongxian
  • 2016年04月09日 21:11
  • 2067

sql语句进阶教程(学习sql这一篇就够了)

转载自:http://blog.csdn.net/u011001084/article/details/51318434 最近从图书馆借了本介绍SQL的书,打算复习一下基本语法,记录一下笔记,整...
  • zsc2014030403015
  • zsc2014030403015
  • 2016年05月04日 23:07
  • 7017

视图用法详解

视图 OCP试题用到结论: 在创建视图时,对这种使用各种函数,或运算表达式的列,一定要起别名,如没有别名视图创建就会失败。 定义视图的列名可以省略,来自SELECT定义中的列名,如果定义...
  • xyw591238
  • xyw591238
  • 2016年05月05日 09:35
  • 1022
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2dx进阶学习之CCEGLView
举报原因:
原因补充:

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