日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

实例介绍Cocos2d-x开关菜单

發(fā)布時(shí)間:2025/7/25 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实例介绍Cocos2d-x开关菜单 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

開(kāi)關(guān)菜單是MenuItemToggle類實(shí)現(xiàn)的,它是一種可以進(jìn)行兩種狀態(tài)切換的菜單。它可以通過(guò)下面的函數(shù)創(chuàng)建:

?

[html]?view plaincopy
  • static?MenuItemToggle*createWithCallback??(?????????
  • ?????????const?ccMenuCallback?&??????callback,????????????//菜單操作的回調(diào)函數(shù)指針??
  • ?????????MenuItem?*????item,??????????????????????????????????????????//進(jìn)行切換的菜單項(xiàng)??
  • ????...??
  • )????
  • ?

    ?

    從第二個(gè)參數(shù)開(kāi)始都是MenuItem類的實(shí)例對(duì)象,它們是開(kāi)關(guān)菜單顯示的菜單項(xiàng),它們可以是文本、圖片和精靈類型的菜單項(xiàng),但是最后不用忘記NULL結(jié)尾。

    下面代碼是簡(jiǎn)單形式的文本類型的開(kāi)關(guān)菜單:

    ?

    [html]?view plaincopy
  • auto?toggleMenuItem?=MenuItemToggle::createWithCallback(??
  • ????????????????????????????????????????CC_CALLBACK_1(HelloWorld::menuItem1Callback,this),??
  • ???????????????????????MenuItemFont::create("On"?),??
  • ???????????????????????MenuItemFont::create("Off"),??
  • ???????????????????????NULL?);?????
  • Menu*?mn?=?Menu::create(toggleMenuItem,NULL);??
  • this->addChild(mn);??
  • ?

    下面我們通過(guò)一個(gè)實(shí)例介紹一下其它的復(fù)雜類型的開(kāi)關(guān)菜單的使用,這個(gè)實(shí)例如下圖所示,是一個(gè)游戲音效和背景音樂(lè)設(shè)置界面,我們可以通過(guò)開(kāi)關(guān)菜單實(shí)現(xiàn)這個(gè)功能,我們的美術(shù)設(shè)計(jì)師為每一個(gè)設(shè)置項(xiàng)目(音效和背景音樂(lè))分別準(zhǔn)備了兩個(gè)圖片。

    ?

    ?

    下面我們看看實(shí)例代碼的實(shí)現(xiàn),HelloWorldScene.cpp中使用MenuItemSprite菜單項(xiàng)的代碼如下:

    ?

    [html]?view plaincopy
  • bool?HelloWorld::init()??
  • {??
  • ???if?(?!Layer::init()?)??
  • ???{??
  • ???????return?false;??
  • ???}??
  • ?????
  • ???Size?visibleSize?=?Director::getInstance()->getVisibleSize();??
  • ???Point?origin?=?Director::getInstance()->getVisibleOrigin();??
  • ???
  • ???Sprite?*bg?=?Sprite::create("menu/background.png");??
  • ???bg->setPosition(Point(origin.x?+?visibleSize.width/2,??
  • ?????????????????????????????origin.y?+visibleSize.height?/2));??
  • ???this->addChild(bg);??
  • ???
  • ????//音效??
  • ???auto?soundOnMenuItem?=?MenuItemImage::create(??
  • ????????????????????????????"menu/on.png",??
  • ????????????????????????????"menu/on.png");????????????????????????????????????????????????????????????????????????①??
  • ???auto?soundOffMenuItem?=?MenuItemImage::create(??
  • ????????????????????????????"menu/off.png",??
  • ????????????????????????????"menu/off.png");????????????????????????????????????????????????????????????????????????②??
  • ?????
  • ???auto?soundToggleMenuItem?=?MenuItemToggle::createWithCallback(??
  • ???????????????????????CC_CALLBACK_1(HelloWorld::menuSoundToggleCallback,this),??
  • ????????????????????????????????????????????????????????????????????????????soundOnMenuItem,??
  • ????????????????????????????????????????????????????????????????????????????soundOffMenuItem,??
  • ????????????????????????????????????????????????????????????????????????????NULL);????????????????????????????????????????????????????????????③??
  • ???
  • ????????soundToggleMenuItem->setPosition(??
  • ?????????????????????????????????????????????????????????Director::getInstance()->convertToGL(Point(818,220)));??
  • ?????
  • ???//音樂(lè)??
  • ???auto?musicOnMenuItem??=MenuItemImage::create(??
  • ????????????????????????????"menu/on.png",??
  • ????????????????????????????"menu/on.png");????????????????????????????????????????????????????????????????????????④??
  • ????????automusicOffMenuItem??=MenuItemImage::create(??
  • ????????????????????????????"menu/off.png",??
  • ????????????????????????????"menu/off.png");????????????????????????????????????????????????????????????????????????⑤??
  • ???auto?musicToggleMenuItem?=?MenuItemToggle::createWithCallback(??
  • ?????????????????????????????????CC_CALLBACK_1(HelloWorld::menuMusicToggleCallback,this),??
  • ???????????????????????????????????????????????????musicOnMenuItem,??
  • ???????????????????????????????????????????????????musicOffMenuItem,??
  • ???????????????????????????????????????????????????NULL?);????????????????????????????????????????⑥??
  • ????????musicToggleMenuItem->setPosition(??
  • ?????????????????????????????????????????????????????????Director::getInstance()->convertToGL(Point(818,362)));??
  • ???
  • ????//Ok按鈕??
  • ????????autookMenuItem??=?MenuItemImage::create(??
  • ????????????????????????????"menu/ok-down.png",??
  • ????????????????????????????"menu/ok-up.png");??
  • ????????okMenuItem->setPosition(Director::getInstance()->convertToGL(Point(600,510)));??
  • ????
  • ???Menu*?mn?=?Menu::create(soundToggleMenuItem,??
  • ??????????????????????????????????????????????????musicToggleMenuItem,okMenuItem,?NULL);???????????????????????????????????⑦??
  • ???
  • ???mn->setPosition(Point::ZERO);??
  • ???this->addChild(mn);??
  • ?????
  • ???return?true;??
  • }??
  • ?

    ?

    在上面代碼第①是創(chuàng)建音效開(kāi)的圖片菜單項(xiàng),第②行是創(chuàng)建音效關(guān)的圖片菜單項(xiàng),第③行代碼是通過(guò)createWithCallback函數(shù)創(chuàng)建開(kāi)關(guān)菜單項(xiàng)MenuItemToggle。類似的第④~⑥創(chuàng)建了背景音樂(lè)開(kāi)關(guān)菜單項(xiàng)。第⑦行代碼是通過(guò)上面創(chuàng)建的開(kāi)關(guān)菜單項(xiàng)創(chuàng)建Menu對(duì)象。

    轉(zhuǎn)載于:https://www.cnblogs.com/iOS-Blog/p/3725241.html

    總結(jié)

    以上是生活随笔為你收集整理的实例介绍Cocos2d-x开关菜单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。