CCScene简介

CCScene is a subclass of CCNode that is used only as an abstract concept.CCScene an CCNode are almost identical with the difference that CCScene has it's anchor point (by default) at the center of the screen.For the moment CCScene has no other logic than that, but in future releases it might have additional logic.It is a good practice to use and CCScene as the parent of all your nodes.

上面是 cocos2d-x 官网解释关于 CCScene 解释,Scene 主要是游戏中的场景,继承与 CCNode 也是一个 Node(节点),可以理解为玩游戏中每个页面,每一个页面中又有不同的节点,例如任务,怪兽,子弹,主角等,上面也建议我们用 CCScene 作为游戏画面中的容器(parent),包括其他所有节点。

CCScene用法

主要是自己创建场景,使用 CCDirector::replaceScene(**) 和 CCDirector::pushScene(**) 2个方法来更换当前场景 在 win32 include 中新建SceneTest.h头文件,头文件定义如下,(#define 为了防止重复编译)
#ifndef __SCENETEST__#define __SCENETEST__#include "cocos2d.h"#include "SimpleAudioEngine.h"class Sceneclass : cocos2d::CCLayerColor {public:Sceneclass();~Sceneclass();// 初始化scenestatic cocos2d::CCScene* scene();virtual void onEnter();// 菜单点击回调函数void popScene(cocos2d::CCObject* sender);void pushScene(cocos2d::CCObject* sener);void replaceScene(cocos2d::CCObject* sender);// 添加菜单void addMenu(CCLayer* layer);};#endif

CDirector::sharedDirector()->pushScene 方法

pushScene 把当前新建的 Scene 加入到项目 scene 堆栈,并且显示到当前页面,之前的 scene 并不会消灭,如果使用 popScene 就把栈顶出栈,恢复到之前 scene

CCDirector::sharedDirector()->replaceScene 方法

replaceScene 把当前 scene 替换掉。
下面是实现的代码:
#include "SceneTest.h"using namespace cocos2d;CCScene* Sceneclass::scene(){CCScene* scene = CCScene::create();Sceneclass* layer = new Sceneclass();layer->autorelease();scene->addChild(layer);return scene;}Sceneclass::Sceneclass(){// 记得初始化CCLayerColor::initWithColor(ccc4(255, 255, 255, 255));}void Sceneclass::onEnter(){// 初始化父类CCLayerColor::onEnter();this->addMenu(this);CCLog("onEnter");}void Sceneclass::popScene(CCObject* sender){// 弹出当前scene堆栈最顶sceneCCDirector::sharedDirector()->popScene();CCLog("popScene");}void Sceneclass::pushScene(CCObject* sender){CCLog("pushScene");CCScene* scene = CCScene::create();Sceneclass* layer = new Sceneclass();layer->autorelease();layer->setColor(ccc3(76, 67, 76));// 初始化菜单this->addMenu(layer);scene->addChild(layer);// 把当前scene压入到scene堆栈,之前一个并没有清楚CCDirector::sharedDirector()->pushScene(scene);}void Sceneclass::replaceScene(CCObject* sender){CCScene* scene = CCScene::create();Sceneclass* layer = new Sceneclass();layer->autorelease();layer->setColor(ccc3(233, 23, 45));// 初始化菜单this->addMenu(layer);scene->addChild(layer);// 替换当前scene,清除前一个sceneCCDirector::sharedDirector()->replaceScene(scene);CCLog("replaceScene");}void Sceneclass::addMenu(CCLayer* layer){// 添加菜单CCMenuItemFont* item1 = CCMenuItemFont::create("popScene", this, menu_selector(Sceneclass::popScene));CCMenuItemFont* item2 = CCMenuItemFont::create("pushScene", this, menu_selector(Sceneclass::pushScene));CCMenuItemFont* item3 = CCMenuItemFont::create("replaceScene", this, menu_selector(Sceneclass::replaceScene));CCMenu* menu = CCMenu::create(item1, item2, item3, NULL);menu->alignItemsVertically();menu->setColor(ccc3(0, 0, 0));layer->addChild(menu, 1);}Sceneclass::~Sceneclass(){}

效果: [cocos2d-x 学习] Scene(场景)学习_第1张图片
[cocos2d-x 学习] Scene(场景)学习_第2张图片
[cocos2d-x 学习] Scene(场景)学习_第3张图片


更多相关文章

  1. android 堆栈调试方法
  2. Android中添加布局和初始化布局总结
  3. android appwidget service的初始化
  4. Android初始化语言 (init.*.rc、init.conf文件格式)
  5. android注解初始化view
  6. Android 应用初始化及窗体事件的分发
  7. [android]初始化代码仓库时出现“OSError: [Errno 2] No such fi
  8. -----------Android Support v4、v7、v13的区别和应用场景
  9. Android 初始化之Zygote

随机推荐

  1. Android的一点思考
  2. Android撬动IT市场的新支点
  3. android模拟器大幅优化_android开发者的
  4. [置顶] Android(安卓)webview开发中 js与
  5. Android将允许纯C/C++开发应用
  6. Android学习之路(一)之 Android文件简单介
  7. android游戏开发(三)触屏事件处理_手势识
  8. Android(安卓)自定义View之坐标系(一)
  9. 【Android】SD卡的安全存储问题
  10. Android撬动IT市场的新支点!