今天我们来看一下怎么做菜单按钮(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,然后点击图片按钮就能实现场景切换了。