cocos2d中分步实现飞机大战----场景跳转
2015-03-05 15:15
295 查看
首先,作为一个完整的游戏项目,要有满足游戏要求的界面,并实现之间的跳转,不能只有一个游戏主界面。
下面以主场景界面为例:
.h文件
#include "cocos2d.h"
USING_NS_CC;
class menuScene:public
Layer{
public:
static Scene * createScene(); //创建场景
CREATE_FUNC(menuScene);
bool init();
void menuCallBack(Ref * obj);
//按钮回调函数
};
.CCP文件
#include
"menuScene.h"
#include "gameScene.h" //---引用要跳转的的场景
#include "helpScene.h"
#include "aboutScene.h"
Scene *
menuScene::createScene(){
auto scene=Scene::create();
scene->addChild(menuScene::create());
return scene;
}
bool
menuScene::init(){
if (!Layer::init()) {
return
false;
}
//-------添加背景图
auto sp=Sprite::create("img_bg_logo.jpg");
this->addChild(sp);
sp->setPosition(Director::getInstance()->getWinSize().width/2,
Director::getInstance()->getWinSize().height/2 );
auto splogo=Sprite::create("LOGO.png");
//-------添加logo
this->addChild(splogo);
splogo->setPosition(Director::getInstance()->getWinSize().width/2,-200);
splogo->runAction(MoveTo::create(1,
Vec2(Director::getInstance()->getWinSize().
width/2,Director::getInstance()->getWinSize().height/2)));
splogo->runAction(MoveTo::create(60,
Vec2(splogo->getPositionX(), splogo->getPositionY())));
//-------添加按钮
MenuItemFont * itemstart=MenuItemFont::create("开始游戏",
CC_CALLBACK_1(menuScene::menuCallBack,this));
// 添加按钮,和回调函数
itemstart->setPositionY(-100); //设置位置
itemstart->setColor(Color3B(0,255,0));//设置颜色
itemstart->setTag(11); //设置编号
MenuItemFont * itemhelp=MenuItemFont::create("游戏帮助",
CC_CALLBACK_1(menuScene::menuCallBack,this));
itemhelp->setPositionY(-150);
itemhelp->setColor(Color3B(0,255,0));
itemhelp->setTag(12);
MenuItemFont * itemabout=MenuItemFont::create("关于",
CC_CALLBACK_1(menuScene::menuCallBack,this));
itemabout->setPositionY(-200);
itemabout->setColor(Color3B(0,255,0));
itemabout->setTag(13);
Menu * menu=Menu::create(itemstart,itemhelp,itemabout,NULL);
this->addChild(menu);
//-----按钮点击回调函数
switch (((MenuItemFont*)obj)->getTag()) { //强制转换,获取按钮编号
case 11:
{
auto f=gameScene::createScene(); //创建场景
Director::getInstance()->replaceScene(f);//使用导演函数实现跳转
}
break;
case 12:
{
auto f=helpScene::createScene();
Director::getInstance()->replaceScene(f);
}
break;
case 13:
{
auto f=aboutScene::createScene();
Director::getInstance()->replaceScene(f);
}
break;
default:
break;
}
}
同理创建,gameScene,helpScene,aboutScene。
下面以主场景界面为例:
.h文件
#include "cocos2d.h"
USING_NS_CC;
class menuScene:public
Layer{
public:
static Scene * createScene(); //创建场景
CREATE_FUNC(menuScene);
bool init();
void menuCallBack(Ref * obj);
//按钮回调函数
};
.CCP文件
#include
"menuScene.h"
#include "gameScene.h" //---引用要跳转的的场景
#include "helpScene.h"
#include "aboutScene.h"
Scene *
menuScene::createScene(){
auto scene=Scene::create();
scene->addChild(menuScene::create());
return scene;
}
bool
menuScene::init(){
if (!Layer::init()) {
return
false;
}
//-------添加背景图
auto sp=Sprite::create("img_bg_logo.jpg");
this->addChild(sp);
sp->setPosition(Director::getInstance()->getWinSize().width/2,
Director::getInstance()->getWinSize().height/2 );
auto splogo=Sprite::create("LOGO.png");
//-------添加logo
this->addChild(splogo);
splogo->setPosition(Director::getInstance()->getWinSize().width/2,-200);
splogo->runAction(MoveTo::create(1,
Vec2(Director::getInstance()->getWinSize().
width/2,Director::getInstance()->getWinSize().height/2)));
splogo->runAction(MoveTo::create(60,
Vec2(splogo->getPositionX(), splogo->getPositionY())));
//-------添加按钮
MenuItemFont * itemstart=MenuItemFont::create("开始游戏",
CC_CALLBACK_1(menuScene::menuCallBack,this));
// 添加按钮,和回调函数
itemstart->setPositionY(-100); //设置位置
itemstart->setColor(Color3B(0,255,0));//设置颜色
itemstart->setTag(11); //设置编号
MenuItemFont * itemhelp=MenuItemFont::create("游戏帮助",
CC_CALLBACK_1(menuScene::menuCallBack,this));
itemhelp->setPositionY(-150);
itemhelp->setColor(Color3B(0,255,0));
itemhelp->setTag(12);
MenuItemFont * itemabout=MenuItemFont::create("关于",
CC_CALLBACK_1(menuScene::menuCallBack,this));
itemabout->setPositionY(-200);
itemabout->setColor(Color3B(0,255,0));
itemabout->setTag(13);
Menu * menu=Menu::create(itemstart,itemhelp,itemabout,NULL);
this->addChild(menu);
//-----按钮点击回调函数
switch (((MenuItemFont*)obj)->getTag()) { //强制转换,获取按钮编号
case 11:
{
auto f=gameScene::createScene(); //创建场景
Director::getInstance()->replaceScene(f);//使用导演函数实现跳转
}
break;
case 12:
{
auto f=helpScene::createScene();
Director::getInstance()->replaceScene(f);
}
break;
case 13:
{
auto f=aboutScene::createScene();
Director::getInstance()->replaceScene(f);
}
break;
default:
break;
}
}
同理创建,gameScene,helpScene,aboutScene。
相关文章推荐
- cocos2d中分步实现飞机大战----游戏场景中背景的滚动
- Cocos2d-X 中quick----lua的跳转场景的实现
- cocos2d中分步实现飞机大战----自己飞机的实现
- cocos2d-x 3.2 |如何实现场景跳转
- cocos2d-x用Lua实现场景跳转
- Cocos2d-js02_实现UI流程和场景跳转
- Cocos2d-x简单游戏<捕鱼达人>代码实现|第四部分:加载场景类
- Cocos2d-x UIView和Coco2d-x场景之间的相互跳转切换
- Cocos2d-x实现场景无限滚动
- cocos2d-x 自定义场景和场景跳转
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第九部分:游戏场景GameScene.h<后续会提供源码下载链接>
- cocos2dx飞机大战Cocos2d-x飞机实现
- 【Cocos2d-html5游戏引擎学习笔记(7)】CCLayer创建及场景跳转
- Cocos2d-x学习(十一):用cocos2d-x实现MoonWarriors(游戏场景切换和主菜单实现)
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第二部分:菜单场景<后续会提供源码下载链接>
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第三部分:通关场景<后续会提供源码下载链接>
- 【cocos2d-x IOS游戏开发-捕鱼达人7】游戏场景基础实现
- cocos2d-xna 游戏中如何控制后退键实现目的性跳转
- cocos2d-x实现场景切换效果
- Cocos2d-x 的onEnter() 和 onEnterTransitionDidFinish() 场景延时跳转