关于Cocos2d-x中UI按钮的定义

时间:2023-03-09 07:10:19
关于Cocos2d-x中UI按钮的定义

1.要有两张不同状态的图片

2.定义一个MenuItemSprite的实例,把这两张图的Sprite实例放进MenuItemSprite的实例

3.把MenuItemSprite的实例放进Menu实例

(4.暂停按钮的这种的要把MenuItemSprite的实例再放进MenuItemToggle实例中,再把MenuItemToggle实例放进Menu实例中)

5.把Menu实例addChild到层

例子

开始游戏按钮

     auto startNormal = Sprite::create("startNormal.png");
auto startSelected = Sprite::create("startSelected.png");
auto startSpriteItem = MenuItemSprite::create(startNormal, startSelected, CC_CALLBACK_1(StartUp::menuStartCallback, this));
auto menu = Menu::create(startSpriteItem, NULL);
this->addChild(menu);
menu->setPosition(visibleSize.width / , visibleSize.height / );
 void StartUp::menuStartCallback(Ref* pSender)
{
//Director::getInstance()->getEventDispatcher()->removeEventListener(touchListener);
Director::getInstance()->replaceScene(TransitionFade::create(, GameScene::createScene()));
}

暂停按钮

   //加入暂停按钮
auto pause_sp1 = Sprite::create("game_pause_nor.png");
auto pause_sp2 = Sprite::create("game_pause_pressed.png");
auto resume_sp1 = Sprite::create("game_resume_nor.png");
auto resume_sp2 = Sprite::create("game_resume_pressed.png"); auto pauseitem = MenuItemSprite::create(pause_sp1, pause_sp2);
auto resumeitem = MenuItemSprite::create(resume_sp1, resume_sp2);
auto pauseButton = MenuItemToggle::createWithTarget(this, menu_selector(GameScene::pauseButtonCallBack), pauseitem, resumeitem, nullptr);
pauseButton->setAnchorPoint(Vec2(, ));
pauseButton->setPosition(Vec2(size.width / - pauseButton->getContentSize().width, size.height / - pauseButton->getContentSize().height)); //位于左上角 auto menu = Menu::create(pauseButton, nullptr);
menu->setScale(0.2);
addChild(menu, , PAUSE_MENU);
 void GameScene::pauseButtonCallBack(Ref* pSender)
{
//log("press pause button!");
}

相关文章