Cocos2dx学习笔记4:导演(Director)

Director是整个cocos2dx引擎的核心,是整个游戏的控制仪,游戏中的一些常用操作就是由Director来控制的,比如OpenGL ES的初始化,场景的转换,游戏暂停继续的控制,世界坐标和GL坐标之间的切换,对节点(游戏元素)的控制等,还有一些游戏数据的保存调用,屏幕尺寸的获取等都要由Director类来管理控制的。

在Cocos2dx中把统筹游戏大局的类抽象为导演(Director),会经常调用进行一些控制,所以该Director利用了单例设计模式。

通过前面我们创建的项目我们打开AppDelegate.cpp文件,可以发现里面在使用了Director的一些函数。

getInstance();//返回一个导演的单例。

getOpenGLView();//获取GLView。

setOpenGLView(glview);//设置GLView。

setDisplayStats(true);//左下角是否有显示FPS。

setAnimationInterval(1.0 / 60);//设置FPS的值。

stopAnimation();//停止动画。不进行绘制。停止主循环。

getInstance()->startAnimation();//主循环触发一次,调用过stopAnimation才能调用这个函数。

我们通常用getInstance() 方法取得Director的实例。我们可以打开引擎的目录D:\cocos2d-x-3.4\cocos\base下,找到类CCDirector,来查看该类的函数和用法。

最常见的一些函数有:

getWinSize () 返回OpenGL视图的大小,以点为单位。

getVisibleSize () 返回可见OpenGL视图大小,以点为单位。

getVisibleOrigin () 返回可见OpenGL视图起始点,以点为单位。

runWithScene (Scene *scene) 初始化游戏进入第一个场景调用它。

pushScene (Scene *scene) 暂停当前运行的场景,压入到暂停的场景栈中。

popScene () 从堆栈中弹出了一个场景。

replaceScene (Scene *scene) 用新的场景替换运行场景。终止正在运行的场景。

通过刚刚列举的一些常用函数我们可以发现几个类似的函数。

那么getVisibleSize 和 getWinSize 和 getVisibleOrigin有什么不同?

getVisibleSize:获得可视区域的大小。若是分辨率跟屏幕尺寸一样大,则getVisibleSize便是getWinSize。

getWinSize:获取屏幕大小。

getVisibleOrigin:表示可视区域的起点坐标。

另外还有一个就是Node节点里面的getContentSize()函数。

getContentSize : 来获得节点(Node)原始的大小。只是逻辑尺寸,不是像素。

上面提到的这四个函数最容易让人搞混淆,理解即可。

本文由闭眼就天黑整理编辑,转载请注明:http://www.byjth.com/biji/23.html | 闭眼就天黑专栏_原创技术博客

时间: 2024-12-27 20:53:01

Cocos2dx学习笔记4:导演(Director)的相关文章

【cocos2d-x学习笔记】导演,场景,层,精灵模型

CCDirector导演 单例类,通过CCDirector::sharedDirector函数去获取导演对象 CCDirector* d = new CCDirector() // error,单例对象不应该自己去创建 1)导演负责初始化环境 2)导演负责推动游戏进程 runWithScene, replaceScene, pushScene, popScene 3) 导演负责坐标变换 CCScene 场景:一幕戏 从cocos2dx数据结构来收,它是一个渲染树的根节点 任一时刻,只有一个Sce

Cocos2dx学习笔记5:场景(Scene)

场景(Scene)是游戏的直接表现元素,游戏是由若干不同的场景构建而成.游戏里面的关卡切换,地图切换实际就是游戏场景的切换.而这所有的流程都是Director来控制. 在项目中打开AppDelegate.cpp文件. 引用头文件#include "HelloWorldScene.h" auto scene = HelloWorld::createScene();//调用HelloWorld::createScene()创建场景 director->runWithScene(sce

【Cocos2D-X 学习笔记】为精灵添加单点触控

由于Cocos2d-x处于新学的阶段,因此最近也无法进行系统地更新,只会选择一些典型的Demo贴上来,一来是与大家分享,而来也可以作为以后回顾时的参考. 今天介绍一下Cocos2d-x的触摸事件处理,了解Android开发的朋友们知道,Android里会用一个OnClickListener()进行事件监听,而在J2SE中也会有Event类实现专门的监听处理.在Cocos2d-x中,因为是游戏引擎,用户在玩游戏时总是要通过屏幕与游戏进行交互,可想而知触摸事件是主要处理的事件.这里主要讲一下如何为精

Cocos2dx 学习笔记整理----场景切换

据说Cocos2dx场景切换的方法有32种:cocos2dx 常见的32种切换场景的动画 无需一一求证,只需要知道切换场景需要怎么做就行了. 作为导演CCDirector,切换场景的事情当然归它管了. 切换场景的接口如下: ? 1 CCDirector::sharedDirector()->replaceScene(cocos2d:CCScene * pScene); 所以,我们只要把需要切换的场景实例传进去就可以了. ? 1 2 CCScene * pScene = GameMain::sce

Cocos2d-x学习笔记—事件处理机制

Cocos2d-x学习笔记-事件处理机制 一:事件处理机制 一个事件由触发到完成响应,主要由以下三部分组成: 事件分发器EventDispatcher: 事件类型EventTouch.EventKeyboard等: 事件监听器EventListenerTouch.EventListenerKeyboard等. 在Cocos2d-x v3.x中,关于事件的东西,无非就是围绕上述的三个部分展开来的,掌握了上述的三个部分,也就掌握了Cocos2d-x v3.x中事件处理的精髓. (1)事件分发器: 事

Cocos2d-x学习笔记(二)Cocos2d-x整体框架描述

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38680123 上一节我们简单分析了HelloWorld工程,这一讲我们将进一步来看看Cocos2d-x的整体框架. 在了解Cocos2d-x的整体框架之前,我们不妨想想拍摄一部电影需要些什么? 导演.舞台(场景).布景.演员,有了这些基本条件后,在这些元素都有了之后,演员就可以根据剧本,表现不同的动作行为. 同理,做一个游戏就像是拍摄一部电影,你同样需要这些元素,而C

cocos2dx学习笔记(2)

昨天尝试了cocos2dx在win下的开发环境配置,并且运行了cocos的helloword程序,晚上想要尝试一下android开发环境配置,顺便学习cocos在eclipse下的JNI机制,按照cocoa中文论坛的android环境配置弄了NDK,并配置了环境变量,由于想要学习cocos的luabind机制(这个我们公司游戏的引擎用的很多,确实比较有兴趣),一切搞定不明就里的用eclipse导入了cocos3.0rc中的tests目录下的cpp-tests工程(这算android开发久了的毛病

Cocos2dx 学习笔记整理----第一个项目

接上一节, 进入新建的项目下面的proj.win32下面,找到项目名.sln文件(我的是game001.sln),双击会通过VS2010打开.(当然,你装了VS什么版本就是什么版本) 将你的项目设为启动项目, 切换到解决方案视图, 然后邮件点击解决方案, 选择生成解决方案. 第一次生成根据个人机器性能会消耗大概1-3分钟,呵呵. 但是以后会快很多的. 生成成功的话会在输出窗口显示如下: 一般都会生成成功,但是我生成的时候失败了很多次,后来发现是这个问题:http://www.cnblogs.co

Cocos2dx 学习笔记整理----开发环境搭建

最近在学习cocos2dx,预备将学习过程整理成笔记. 需要的工具和环境整理一下: 使用的版本 cocos2dx目前已经出到了v3.1.1,学习和项目的话还是用2.2.3为宜,毕竟不大想做小白鼠,并且学习了几天之后才发出3.X版本的,版本内容变动比较大. 开发环境 1 jdk 1.6以上 2 python 2.7为宜(创建项目要用的) 3 NDT+Android SDK 4 Cygwin或者MinGW 开发工具 1 Eclipse + CDT + ADT 2 VS2010 3 Sublime T

Cocos2dx 学习笔记整理----在项目中使用图片(初)

cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资源皆是以Resources文件夹为根目录参考的. 然后进入到HelloWorldScene.cpp的init方法的最后面加入以下代码: ? 1 2 3 CCSprite * sprite = CCSprite::create("bl_24.png"); sprite->setPosi