cocos2dx中的场景和使用方法

1.一个游戏中有且只有一个导演,但是至少有一个场景

2.场景是游戏元素节点数的根节点,也可以理解为该场景下的渲染树的根节点

3.场景是一个容器,包含了该场景下的所有游戏元素,比如层,精灵

4.场景是导演用来控制游戏流程用的,例如如何开始场景,什么时候切换场景,什么条件下结束场景等等

5.与场景有关的API操作:

运行场景:runWithScene(Scene* scene);

启动游戏,并运行scene场景。本方法在主程序第一次启动主场景的时候调用。如果已有正在运行的场景则不能调用该方法;会调用pushScene

切换场景:分为两种,一种是压栈的,另一种是直接销毁的

pushScene(Scene* scene);

将当前运行中的场景暂停并压入到代码执行场景栈中,再将传入的scene设置为当前运行场景,只有存在正在运行的场景时才调用该方法(此方法,会造成游戏运行时内存消耗变大)

replaceScene(Scene* scene);

直接使用传入的scene替换当前场景来切换画面,当前场景被释放。这是切换场景时最常用的方法。(此方法,比较省内存,也最常用)

释放场景:popScene(Scene* scene);

与pushScene()对应,释放当前场景,再从代码执行场景中弹出栈顶的场景,并将其设置为当前运行场景。如果栈为空,直接结束游戏。

暂停场景:pause();暂停当前运行场景中的所有定时器和动作,场景仍然会显示在屏幕上

恢复场景:resume();恢复当前运行场景的所有计时器和动作,场景仍然会显示在屏幕上

结束场景:end();释放和终止执行场景,同时退出游戏

时间: 2024-10-12 09:10:33

cocos2dx中的场景和使用方法的相关文章

cocos2dx 中切换场景内存占用过高的处理

cocos2dx 中切换场景内存占用过高的处理 1.运行场景: CCScene *pScene = HelloWorld::scene(); pDirector->runWithScene(pScene); 2.替换场景: (1) CCScene *pScene=SceneTestScene::scene(); CCDirector::sharedDirector()->replaceScene(pScene); (2) CCScene *pScene=SceneTestScene::scen

改进cocos2dx中lua读ccb的方法

cocos2dx自带的CCBProxy真弱,还好提供了一个CCBReaderLoader.lua,但是也不好用, 于是修改了一下CCBReaderLoader,下面直接贴代码了. function NewCCBuilderReaderLoad(strFilePath,proxy,owner) if nil == proxy then return end --print("ccbnew") local ccbReader = proxy:createCCBReader() local

关于Cocos2d-x中的scheduleUpdate和update方法的使用

如果要让某类实例对象要连续执行某些语句(比如让每个Block实例从运行框最右边移动到最左边) 要在Block类中增加一些东西 1.先在其.cpp文件的init()函数中执行scheduleUpdate()方法. 2.然后在.h中声明一个虚拟的函数update,并在.cpp文件中定义update,当init中执行scheduleUpdate()时,会不断地调用update函数,里面的语句也不断地被执行,直到执行unscheduleUpdate()时停止调用update()函数,unschedule

关于Cocos2d-x中打包图集和使用方法

1.打开TextruePacker软件 2.把游戏中要使用的图片拖到TextruePacker里面,TextruePacker会自动帮我们排序,让所有小图变成一个大图 3.点击Publish-会输出两个文件 MyTexture.plist  //里面记录了所有小图在大图中的位置和属性,cocos可以根据这些信息在MyTexture.png大图中找到所需要的小图 MyTexture.png  //一张容纳了所有小图的大图 4.在GameScene.cpp的init方法里面写 //加载plist文件

cocos2dx中加载图片资源的方法,和从内存中获取已经加载的图片资源的方法

游戏中通常需要将常用的资源如:声音,图片,plist文件,提前加载进内存,以加快游戏的流畅度 1.预加载声音: SimpleAudioEngine::getInstance()->preloadBackgroundMusic("boom.mp3"); 加载之后就可以直接播放:SimpleAudioEngine::getInstance()->playBackgroundMusic("boom.mp3"); 2.预加载图片资源: 图片资源的加载分为同步加载

关于Cocos2d-x中init方法和onEnter方法的区别

init()和onEnter()这两个方法都是写实例化对象的类(比如继承自Node的一些类等等)的时候用到的方法. 一般都是public类型下面的 bool init(); void onEnter(); 两个方法在实现的时候都要先执行父类方法,比如 Node::init(); Node::onEnter(); 注意: 1.init()在类的初始化时只会调用一次. 2.onEnter在该类被载入场景的时候被调用,可能会发生多次. 3.Node* nd = new Node(); 这种情况下,只会

关于Cocos2d-x中坐标系的种类和转换

一.UI坐标系 在进行iOS或者Android界面开发时,它的坐标系规则如下图所示: 原点坐标(x=0, y=0)位于左上角: X轴从屏幕最左边开始,由左向右渐增: Y轴坐标从屏幕最上方开始,由上向下渐增 二.Cocos2d-x坐标系 Cocos2d-x坐标系是这里的重点,也是我们开发时考虑的最多的.由于Cocos2d-x是基于OpenGL和OpenGL ES的.该坐标系的规则如下: 原点坐标(x=0, y=0)位于左下角: X轴从屏幕最左边开始,由左向右渐增: Y轴从屏幕最下方开始,由下向上渐

如何在cocos2d-x中使用ECS(实体-组件-系统)架构方法开发一个游戏?

引言 在我的博客中,我曾经翻译了几篇关于ECS的文章.这些文章都是来自于Game Development网站.如果你对这个架构方式还不是很了解的话,欢迎阅读理解 组件-实体-系统和实现 组件-实体-系统. 我发现这个架构方式,是在浏览GameDev上的文章的时候了解到的.很久以前,就知道了有这么个架构方法,只是一直没有机会自己实践下.这一次,我就抽空,根据网上对ECS系统的讨论,采用了一种实现方法,来实现一个. 我很喜欢做游戏,所以同样的,还是用游戏实例来实践这个架构方法.我将会采用cocos2

cocos2dx 游戏开发中常用场景切换方式以及特性

runWithScene(CCScene* scene):启动游戏,并运行scene 场景.这个方法在主程序启动时第一次启动主场景时调用. replaceScene(CCScene* scene):直接使用传入的scene 替换当前场景来切换画面,当前场景将被释放.这是切换场景时 最常用的方法. pushScene(CCScene* scene):在不释放旧场景内存的情况下运行新场景,推进新场景相当于在当前可见的纸上再放一张纸,而之前的纸位置何持不变.适用情况: 1.推进一个经常被用到的场景,例