cocos2d-x 3.2 |如何实现场景跳转
2014-09-08 20:14
330 查看
通过cocos2d-x 3.2 Menu实现场景间跳转
前情提要:今天给大家带来一篇利用cocos2d-x 3.2 Menu方法实现场景间跳转的初级文章(老鸟飞过吧),
希望初学者一点一点积累,总会看到太阳!(废话少说,下面开始)
第一步:创建一个菜单类 我把他命名为 MenuScene 你呢?
然后在菜单场景类MenuScene的头文件中 我们定义如下方法:
实现多菜单项跳转 { c_menuitem_start=10, c_menuitem_help=11 }; CREATE_FUNC(MainMenu); static Scene * CreateScene();//创建菜单场景 bool init();//初始化 void menuCollBack(Ref * obj);//回调函数};
第二步:我们在MenuScene.cpp中实现.h文件定义的方法
以上两步只是实现了菜单类的功能,如果在点击了按钮后跳转到新场景,我们需要创建一个Game、Help的类
第三步 我们创建一个Game场景类(表现菜单------>场景切换)
第四步 实现Game类中定义的如上方法
第四步: 创建一个Help类实现菜单------>帮助页面的跳转方法 实现过程同上 此处留给动脑筋的你!
总结:以上我们实现了从菜单------>场景 场景------>菜单 相互跳转的方法 赶紧试一下吧!!!
前情提要:今天给大家带来一篇利用cocos2d-x 3.2 Menu方法实现场景间跳转的初级文章(老鸟飞过吧),
希望初学者一点一点积累,总会看到太阳!(废话少说,下面开始)
第一步:创建一个菜单类 我把他命名为 MenuScene 你呢?
然后在菜单场景类MenuScene的头文件中 我们定义如下方法:
#include <stdio.h> #include "cocos2d.h"
<pre name="code" class="cpp">#include "Help.h" #include "Game.h"using namespace cocos2d;class MainMenu:Layer{public: enum item_tag //利用枚举
实现多菜单项跳转 { c_menuitem_start=10, c_menuitem_help=11 }; CREATE_FUNC(MainMenu); static Scene * CreateScene();//创建菜单场景 bool init();//初始化 void menuCollBack(Ref * obj);//回调函数};
第二步:我们在MenuScene.cpp中实现.h文件定义的方法
#include "MainMenu.h" Scene * MainMenu::CreateScene() { //搭建场景 auto scene=Scene::create(); auto layer=MainMenu::create(); scene->addChild(layer); return scene; } bool MainMenu::init() { if (!Layer::init()) { return false; }
//添加菜单背景 auto menubk=Sprite::create("loading.png"); this->addChild(menubk); menubk->setAnchorPoint(Vec2(0, 0)); menubk->setPosition(Vec2(0,0));
//添加游戏logo auto gname=Sprite::create("logo_1.png"); this->addChild(gname); gname->setPosition(Vec2(Director::getInstance()->getWinSize().width/2, Director::getInstance()->getWinSize().height-100)); //添加开始帮助 auto label1=Label::createWithSystemFont("开始游戏","",40); label1->setColor(Color3B::GREEN); auto label2=Label::createWithSystemFont("帮助","",40); label2->setColor(Color3B::GREEN);
//创建两个菜单条目 需回调函数声明 auto menuItemStart=MenuItemLabel::create(label1, CC_CALLBACK_1(MainMenu::menuCollBack, this));//开始菜单 menuItemStart->setPosition(Vec2(Director::getInstance()->getWinSize().width/2, 880)); menuItemStart->setTag(this->c_menuitem_start); auto menuItemHelp=MenuItemLabel::create(label2, CC_CALLBACK_1(MainMenu::menuCollBack, this));//开始菜单 menuItemHelp->setPosition(Vec2(Director::getInstance()->getWinSize().width/2, 750)); menuItemHelp->setTag(this->c_menuitem_help);
//创建菜单 auto menu=Menu::create(menuItemStart,menuItemHelp,nullptr);//C11标准可以nullptr menu->setPosition(Vec2::ZERO); this->addChild(menu); return true; }
//实现回调方法 void MainMenu::menuCollBack(Ref * obj) { auto nowItem=(MenuItemLabel *)obj; switch (nowItem->getTag()) { case c_menuitem_start://开始游戏 画面跳转道GAME场景 { auto scened=Game::CreateScene(); Director::getInstance()->replaceScene(TransitionFade::create(0.1,scened)); break; } case c_menuitem_help://帮助 画面跳转到Help场景 auto scene=Help::CreateScene(); Director::getInstance()->replaceScene(TransitionFade::create(0.1,scene)); break; } }
以上两步只是实现了菜单类的功能,如果在点击了按钮后跳转到新场景,我们需要创建一个Game、Help的类
第三步 我们创建一个Game场景类(表现菜单------>场景切换)
#include <stdio.h> #include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
using namespace cocos2d;
class Game:Layer
{
public:
CREATE_FUNC(Game);
static Scene * CreateScene();//创建Game场景
bool init();//初始化场景
void reCallBack(Ref * obj);//返回 回调函数
};
第四步 实现Game类中定义的如上方法
#include "Game.h" #include "MainMenu.h" USING_NS_CC; Scene * Game::CreateScene() { auto scene=Scene::create();//创建Game场景 auto layer=Game::create();//创建Layer层 scene->addChild(layer);//layer添加道scene中 return scene;//返回场景 } bool Game::init() { if (!Layer::init()) { return false; } //创建"文字"返回按钮 auto menurt=MenuItemLabel::create(Label::createWithSystemFont("返回", "", 32),CC_CALLBACK_1(Game::reCallBack, this)); menurt->setAnchorPoint(Vec2::ZERO); menurt->setPosition(600-30,Director::getInstance()->getWinSize().height-36); menurt->setColor(Color3B::GREEN); //创建菜单 auto menu=Menu::create(menurt,nullptr); menu->setPosition(Vec2::ZERO); this->addChild(menu,2);
return true; } //返回主菜单 void Game::reCallBack(Ref * obj) { auto scene=MainMenu::CreateScene(); Director::getInstance()->replaceScene(scene); }
第四步: 创建一个Help类实现菜单------>帮助页面的跳转方法 实现过程同上 此处留给动脑筋的你!
总结:以上我们实现了从菜单------>场景 场景------>菜单 相互跳转的方法 赶紧试一下吧!!!
相关文章推荐
- cocos2d-x 3.2 |如何实现一个贪吃蛇游戏
- Cocos2d-js02_实现UI流程和场景跳转
- Cocos2d-X 中quick----lua的跳转场景的实现
- 【cocos2dx】如何实现场景的跳转
- cocos2d-x 3.2 |如何在Layer中实现用户触摸
- cocos2d中分步实现飞机大战----场景跳转
- cocos2d-x用Lua实现场景跳转
- 如何实现flash多个场景的跳转
- cocos2d-xna 游戏中如何控制后退键实现目的性跳转
- cocos2d-x 3.2 |如何实现图片显示和精灵动画 Sprite
- [原创]如何让Loadrunne实现多个场景运行?
- Silverlight实现查询建模(六) 带动画场景跳转
- JSP 如何实现网页定时跳转:
- 如何实现鼠标静止一定时间后跳转到新页面
- 如何实现网站根据ip判断地区 自动跳转到所属地区页面【PHP版】
- 如何实现文本框焦点自动跳转及通过回车键提交表单
- 如何在asp.net实现文本框焦点自动跳转及通过回车键提交表单
- as3类开发,场景2帧如何实现控制方法
- 网页在实现自动登录后,再跳转打开网页如何实现?
- 如何通过服务器ImageButton的Click代码实现跳转(跳转到顶级的框架中)呢