Cocos2D-x游戏开发之二:菜单事件响应

接着描述Cocos2D-x基础知识。这一节我描述一下Cocos2D-x菜单的定义和响应。

先上代码吧,我们直接在helloworld的init函数中做更改调试:

bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        //
        // super init first
        //


        CC_BREAK_IF(! CCLayer::init());


        //
        CCSize size = CCDirector::sharedDirector()->getWinSize();
        CCMenuItemImage *pCloseItem = CCMenuItemImage::create("CloseNormal.png","CloseSelected.png",this,menu_selector(HelloWorld::menuCloseCallback));
        CC_BREAK_IF(! pCloseItem);


        // Place the menu item bottom-right conner.
        pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));
CCLabelTTF *label = CCLabelTTF::create("Show Sprite","Arial",30);
CCMenuItemLabel *plabel = CCMenuItemLabel::create(label,this,menu_selector(HelloWorld::LabelCallback));
        // Create a menu with the "close" menu item, it's an auto release object.
        CCMenu* pMenu = CCMenu::create(pCloseItem,plabel, NULL);
        pMenu->setPosition(size.width/2,size.height/2);
        CC_BREAK_IF(! pMenu);
pMenu->alignItemsVertically();


        // Add the menu to HelloWorld layer as a child layer.
        this->addChild(pMenu, 2);


        CCSprite* pSprite = CCSprite::create("HelloWorld.png");
        CC_BREAK_IF(! pSprite);
        pSprite->setPosition(ccp(size.width/2, size.height/2));
pSprite->setVisible(false);
        this->addChild(pSprite, 0,1);


        bRet = true;
    } while (0);


    return bRet;
}


void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    // "close" menu item clicked
    CCDirector::sharedDirector()->end();
}


void HelloWorld::LabelCallback(CCObject* pSender)
{
CCSprite *spr=(CCSprite*)this->getChildByTag(1);
if (spr->isVisible())
{
spr->setVisible(false);
}
else
spr->setVisible(true);
}

下面对代码加以解释:

首先菜单子项:CCMenuItem 有很多种形式的实现我们这里用了最常用的MenuItemImag 和MenuItemLabel 其具体的描述请参见文档。

CmenuItem需要加入到容器CCMenu中来使用(其实这里的CCMenu好比CCsene我只这么理解的)然后将CCMenu加入到Layer中就能在场景中显示了。

注意设置菜单事件用menu_selector()来实现。

demo源码:http://download.csdn.net/detail/vanquishedzxl/7047123

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值