日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实例介绍Cocos2d-x开关菜单

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

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

?

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

    ?

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

    下面代碼是簡單形式的文本類型的開關(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ān)菜單的使用,這個實例如下圖所示,是一個游戲音效和背景音樂設(shè)置界面,我們可以通過開關(guān)菜單實現(xiàn)這個功能,我們的美術(shù)設(shè)計師為每一個設(shè)置項目(音效和背景音樂)分別準備了兩個圖片。

    ?

    ?

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

    ?

    [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)));??
  • ?????
  • ???//音樂??
  • ???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)建音效開的圖片菜單項,第②行是創(chuàng)建音效關(guān)的圖片菜單項,第③行代碼是通過createWithCallback函數(shù)創(chuàng)建開關(guān)菜單項MenuItemToggle。類似的第④~⑥創(chuàng)建了背景音樂開關(guān)菜單項。第⑦行代碼是通過上面創(chuàng)建的開關(guān)菜單項創(chuàng)建Menu對象。

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

    總結(jié)

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

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