cocos2d-x ios游戏开发初认识(四) 场景的切换
来源:互联网 发布:淘宝网商贷款扣钱 编辑:程序博客网 时间:2024/06/05 20:16
这章主要讲cocos2d-x中场景的切换,做过ios开发经常会用到通过一些点击事件从而跳到另外一个界面,最熟悉的就是uibutton,下面讲下场景的切换其实和ios开发中的思想都差不多。
在cocos2d-x是通过CCMenu来创建一些菜单从而实现菜单的点击。CCMenuItem有很多的子类,比如:
CCMenuItemFont 文字菜单
CCMenuItemImage 图片菜单
CCMenuItemLabel 标签菜单
都可以加入到菜单CCMenu中去。。。。
下面掩饰一个 CCMenuItemFont 文字菜单的跳转
//创建文字菜单
CCMenuItemFont *item = CCMenuItemFont::create("开始游戏");//传一个参数
//添加到菜单栏里面
CCMenu *menu =CCMenu::create(item,NULL);//可以传多个
this->addChild(menu); //添加到当前的层
运行:
可以看到在屏幕的中间看到一个开始游戏菜单。
下面设置设置菜单的点击事件让点击时候跳到另外一个场景,这时的菜单创建时就要选择另外一个了。
函数原型:
CCMenuItemFont *item = CCMenuItemFont::create(<#const char *value#>, <#cocos2d::CCObject *target#>, <#SEL_MenuHandler selector#>)
看看SEL_MenuHandler 要传的参数typedefvoid (CCObject::*SEL_MenuHandler)(CCObject*);
SEL_MenuHandler是一个函数指针 指向一个无返回值 函数参数为CCObject类型的函数
下面定义一个这样的函数:
在类里面定义:
class MainScene:publicCCLayer {
private:
void onMenuItem(CCObject *obj); //定义一个菜单点击事件
private:
void update(float t); //定义一个帧回掉函数
private:
CCSprite *sprite;
public:
virtualbool init(); //初始化
staticCCScene* scene(); //类方法用来创建场景对象
CREATE_FUNC(MainScene); //创建MainScene层对象
};
函数实现:
//创建文字菜单
// CCMenuItemFont *item = CCMenuItemFont::create("开始游戏"); //传一个参数
CCMenuItemFont *item =CCMenuItemFont::create("开始游戏",this,menu_selector(MainScene::onMenuItem));//点击事件
//添加到菜单栏里面
CCMenu *menu =CCMenu::create(item,NULL);//可以传多个
this->addChild(menu); //添加到当前的层
//菜单点击事件
voidMainScene::onMenuItem(CCObject *obj)
{
CCLOG("开始游戏被点击了!!");
}
运行:
点击开始游戏 菜单可以看到信息被打印 输出:
知道点击会调用这个函数 下面在这个函数里改变场景就实现了场景的切换。
一、再添加一个场景
新建一个GameScene 类
类的声明:
using namespace cocos2d;
class GameScene:publicCCLayer
{
public:
//必须实现的三个函数
virtualbool init();
staticCCScene *scene();
CREATE_FUNC(GameScene);
};
类的实现:
CCScene *GameScene::scene()
{
CCScene *scene =CCScene::create(); //场景
GameScene *layer =GameScene::create();//层
scene->addChild(layer); //层添加到场景
return scene; //返回场景
}
boolGameScene::init()
{
if(!CCLayer::init())
{
return false;
}
CCSprite *sprite =CCSprite::create("Icon-72.png"); //创建一个精灵
CCSize winSize =CCDirector::sharedDirector()->getWinSize();//得到屏幕的宽高
sprite->setPosition(ccp(winSize.width/2, winSize.height/2));//设置位置
this->addChild(sprite); //添加精灵
return true;
}
有了前面的基础 这些基本的函数写法都会很熟悉了。
再回到MainScene.m 的onMenuItem函数
//菜单点击事件
voidMainScene::onMenuItem(CCObject *obj)
{
CCLOG("开始游戏被点击了!!");
CCScene *scene =GameScene::scene();//得到game场景
CCDirector::sharedDirector()->replaceScene(scene);//原场景释放掉跳转到新场景
}
运行:
点击开始游戏:
跳转到game场景
弹出的效果还可以修改:
//也可以
CCTransitionCrossFade *transitionScene =CCTransitionCrossFade::create(2, scene);//淡入淡出的效果
CCDirector::sharedDirector()->pushScene(transitionScene); //新场景在原先场景的后面
这里有很多效果 都可以去尝试场景的切换就写到这里。。
- cocos2d-x ios游戏开发初认识(四) 场景的切换
- Cocos2D-x游戏开发之一:场景切换
- cocos2d-x ios游戏开发初认识(一)
- cocos2d-x ios游戏开发初认识(二)
- cocos2d-x ios游戏开发初认识(三) 帧回掉
- cocos2d-x游戏开发(十一)细说场景切换
- cocos2d-x游戏开发(十二)场景切换:滑门效果
- Cocos2d-x游戏开发——场景切换效果
- cocos2d-x游戏开发(十一)细说场景切换
- cocos2d-x游戏开发(十二)场景切换:滑门效果
- cocos2d-x ios游戏开发初认识(六) 渲染的优化
- cocos2d-x ios游戏开发初认识(七) 简单的动画
- Cocos2d-X开发中国象棋《四》设计游戏场景
- cocos2d-x 菜鸟学习笔记四(游戏场景与场景切换)
- cocos2d-x 游戏暂停场景切换 注意事项
- cocos2d-x 场景的切换
- cocos2d-x 场景的切换
- 【Cocos2D-X 游戏引擎】初窥门径(2) 场景的切换及特效
- HDOJ题目1285确定比赛名次(拓扑排序,模板)
- 【VB版机房收费】MSFlexGrid控件
- hdu 2955 Robberies(01背包)
- hdu 3874 树状数组+离线处理
- Yii 不完全解决方案(二)
- cocos2d-x ios游戏开发初认识(四) 场景的切换
- poj 3096 Surprising Strings
- hdu 1312 Red and Black(DFS)
- SlindingMenu 侧滑菜单框架使用
- STM32 关于GPIO的问题集锦
- leetcode 刷题之路 91 Pascal's Triangle
- how to access virtual machine image
- u-boot-2010.12移植到2440
- HDOJ 4944 FSF’s game