新手记录:cocos2dx-3.0Menu,切换场景

今天我们来看一下怎么做菜单按钮(Menu)。


先来创建一个文字菜单按钮

Size size = Director::getInstance()->getWinSize(); //取得窗口大小

MenuItemFont *item = MenuItemFont::create("Menu",this,menu_selector(HelloWorld::menuCloseCallback));//是退出窗口的回调函数,在程序新建的时候就有,在最下面,不懂的可以直接复制粘贴,然后修改东西,尝试着理解一下。
//创建一个文字按钮
Menu *menu = Menu::create(item,NULL); //将文字按钮与菜单绑定
menu->setPosition(ccp(size.width/2,size.height/2));
addChild(menu);


这样一个文字菜单就出现了。点击文字,文字会变大,松开之后,窗口就退出了。


图片按钮:

Size size = Director::getInstance()->getWinSize(); //取得窗口大小
//定义一个图片变化菜单按钮
CCMenuItemImage *cc = CCMenuItemImage::create("CloseNormal.png",   //没有点击的时候的效果
                                        "CloseSelected.png",//点击之后的效果
                                        this, //回掉函数,
menu_selector(HelloWorld::menuCloseCallback));//执行的方法
Menu *menu = Menu::create(cc,NULL);
menu->setPosition(ccp(size.width/2,size.height/2));
addChild(menu);


效果如上一样,只是这个变成了图片按钮而已。


现在我们来看看如果切换场景,就是就是新建一个场景,点击菜单按钮之后,进入另外一个场景内。

我们需要新建一个类,NewScene.h里面写

#include "cocos2d.h" //引入Coco2dx的头文件


USING_NS_CC; //cocos2dx的命名空间

新建场景需要继承layer

class NewScene : public cocos2d::Layer
{
.....

......

};

在头文件里面定义三个方法,这是新建场景的一般都会用的。

class NewScene : public cocos2d::Layer
{
public:

virtual bool init();    


static Scene* createScene();
CREATE_FUNC(NewScene);


};


然后到NewScene.cpp文件里面实现这些类

//初始化新场景

Scene *NewScene::createScene()
{
Scene *scene = Scene::create();//新建一个场景
NewScene *layer = NewScene::create(); //将NewScene的Crete的方法实现
scene->addChild(layer); //将layer添加到新的场景中


return scene; //返回scene
}

bool NewScene::init(){
//为了能看出明显的变化,我们添加一张背景图
Sprite *sprite = Sprite::create("HelloWorld.png");
sprite->setPosition(ccp(200,200));
addChild(sprite);


好,现在来实现菜单跳转,现在头文HelloWorldScene.h里面定义一个方法,一个跳转的方法

void newSceme(cocos2d::Ref* pSender); //事件


然后来实现此方法:

在HelloWorldScene.cpp最上面引入newscene.h


#include "NewScene.h"


直接贴出代码

void HelloWorld::newSceme(cocos2d::Ref* pSender){


 
Director::getInstance()->replaceScene(TransitionFadeBL::create(1, NewScene::createScene()));

//导演重新开一个新的场景replaceScene(第二个或者以后的场景新开辟都得用这个)


 


} //事件


把图片菜单的执行方法改成:HelloWorld::newSceme,然后点击图片按钮就能实现场景切换了。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值