[cocos2d-x 学习] Scene(场景)学习
来源:互联网 发布:ib网络的网线 编辑:程序博客网 时间:2024/05/18 13:29
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(场景)学习
- Cocos2d-x学习笔记(三)-------->Scene场景
- cocos2d-x基础学习-创建并替换场景Scene
- cocos2d-X 场景Scene
- Cocos2d-x学习笔记《07》——场景类Scene、布景类Layer
- cocos2d-x创建场景Scene及三要素
- cocos2d-x scene场景的切换
- cocos2d-js学习笔记---场景转换(scene),颜色图层,变量获得
- cocos2d-x 学习点滴(5) Scene,Director, Layer 和 Sprite
- cocos2d-x初探学习笔记(8)--场景特效
- Cocos2d-x学习笔记(2)- 场景的基本元素
- cocos2d-x学习笔记(二)--场景切换
- cocos2d-x初探学习笔记(8)--场景特效
- cocos2d-x-3.0rc1 学习笔记3(场景切换)
- Cocos2d-x学习笔记(八)场景切换原理分析
- Cocos2d-x学习笔记(四)-------->场景切换
- Cocos2d - x学习笔记 [2] 菜单(GUI)、场景跳转
- cocos2d-x初探学习笔记(8)--场景特效
- 《Cocos2d-x lua 学习篇一》
- android 利用反射获取当前系统sdk版本等属性
- mips64 虚地址空间划分
- webservice soap wsdl 在.NET平台 j2ee平台 LAMP php 三大平台如何做webservice
- c++ 整形转字符
- [cocos2d-x 学习] Scene(场景)学习
- 复习java web 之 servlet(一)
- linux常用工具诊断工具使用示例1
- UVa 10034 - Freckles
- 编写信息管理系统时出现的问题。
- ExtJs的数据代理proxy
- 【Android】
- 消息推送(Server Push)
- Chrome下强制http重定向到https的方法——补充