您好,登錄后才能下訂單哦!
在使用之前,我們的先看一下用這個(gè)能實(shí)現(xiàn)什么效果,大家應(yīng)該都玩過保衛(wèi)蘿卜吧,我們就用CClayerMultiplex,實(shí)現(xiàn)一下保衛(wèi)蘿卜的設(shè)置界面。
是不是點(diǎn)擊,選項(xiàng),數(shù)據(jù)統(tǒng)計(jì),制作方界面都會(huì)變,可能有的小伙伴會(huì)想,我用多個(gè)類也能實(shí)現(xiàn),或者我用類似選關(guān)的方法,讓層左右滑動(dòng)唄,當(dāng)然都可以......我只是講例子(當(dāng)然實(shí)際作出來的效果和原版很差距,上面只有3個(gè)層背景)
首先,我們先查看一下官方是怎么用這玩意的
CCLayerMultplex:可以包含好幾個(gè)layer,但是只顯示一個(gè)layer,可以實(shí)現(xiàn)多個(gè)Layer之間的切換
官方示例是這樣的
在.h中
//實(shí)現(xiàn)多層切換的CCLayerMultiplex對(duì)象
CCLayerMultiplex* multi;
在.cpp中
//設(shè)置窗口的背景顏色為綠色
CCLayerColor* layer1 = CCLayerColor::create(ccc4(0, 255, 0, 255));
//設(shè)置窗口的背景顏色為紅色
CCLayerColor* layer2 = CCLayerColor::create(ccc4(255, 0, 0, 255));
//多層
multi = CCLayerMultiplex::create(layer1, layer2, NULL);
//multi->switchTo(1);
addChild(multi);
奧,這樣一看,這個(gè)家伙好像一個(gè)有特定功能的控制器,把層擺放好,每一個(gè)做好標(biāo)記
那我也借鑒一下,試試
注:因?yàn)槲乙彩莿倓倢W(xué)習(xí)cocos2d-x的新手,代碼偏于傻瓜化,不要笑
我在.h里這樣寫
#pragma once
#include "cocos2d.h"
using namespace cocos2d;
class Setting : public CCLayer
{
public:
bool init();
static CCScene* scene();
CCLayerMultiplex *LL; //多層控制器
void SetBack(CCObject*);//設(shè)置按鈕的回調(diào)函數(shù)
void Datatongji(CCObject*);//數(shù)據(jù)統(tǒng)計(jì)
void Makemen(CCObject*);//制作方
CREATE_FUNC(Setting);
Setting(void);
~Setting(void);
};
.cpp
#include "Setting.h"
Setting::Setting(void)
{
}
Setting::~Setting(void)
{
}
bool Setting::init()
{
CCLayer::init();
//-----獲取坐標(biāo)和錨點(diǎn)--------
CCSize sz = CCDirector::sharedDirector()->getVisibleSize();
CCPoint point = CCDirector::sharedDirector()->getVisibleOrigin();
//-----加載plist文件---------
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("scene/setting01-hd.plist");
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("scene/setting02-hd.plist");
//-----添加三個(gè)層,使用CClayerMultiplex管理層-------------
CCLayer* L1 = CCLayer::create();
CCSprite* L1bg = CCSprite::createWithSpriteFrameName("setting_bg.png");
L1->addChild(L1bg);
L1->setPosition(ccp(sz.width/2,sz.height/2));
CCLayer* L2 = CCLayer::create();
CCSprite* L2bg = CCSprite::createWithSpriteFrameName("statistics_bg.png");
L2->addChild(L2bg);
L2->setPosition(ccp(sz.width/2,sz.height/2));
CCLayer* L3 = CCLayer::create();
CCSprite* L3bg = CCSprite::createWithSpriteFrameName("credits_bg.png");
L3->addChild(L3bg);
L3->setPosition(ccp(sz.width/2,sz.height/2));
LL = CCLayerMultiplex::create(L1,L2,L3,NULL);
LL->switchTo(0);
this->addChild(LL,1);
//-----添加按鈕--------------
//選項(xiàng)按鈕
CCMenuItemImage* set = CCMenuItemImage::create(NULL,NULL,this,menu_selector(Setting::SetBack));
CCSprite* set1 = CCSprite::createWithSpriteFrameName("options_normal_CN.png");
CCSprite* set2 = CCSprite::createWithSpriteFrameName("options_selected_CN.png");
set->setNormalImage(set1);
set->setSelectedImage(set2);
//數(shù)據(jù)統(tǒng)計(jì)
CCMenuItemImage* Datemen = CCMenuItemImage::create(NULL,NULL,this,menu_selector(Setting::Datatongji));
CCSprite* Datemen1 = CCSprite::createWithSpriteFrameName("statistics_normal_CN.png");
CCSprite* Datemen2 = CCSprite::createWithSpriteFrameName("statistics_selected_CN.png");
Datemen->setNormalImage(Datemen1);
Datemen->setSelectedImage(Datemen2);
//制作方
CCMenuItemImage* men = CCMenuItemImage::create(NULL,NULL,this,menu_selector(Setting::Makemen));
CCSprite* men1 = CCSprite::createWithSpriteFrameName("credits_normal_CN.png");
CCSprite* men2 = CCSprite::createWithSpriteFrameName("credits_selected_CN.png");
men->setNormalImage(men1);
men->setSelectedImage(men2);
//menu菜單集合
CCMenu* menu = CCMenu::create(set,Datemen,home,men,NULL);
menu->setPosition(ccp(sz.width/2,sz.height/2));
set->setPosition(ccp(-210,275));//不要在意這些數(shù)字,要根據(jù)你自己做的demo設(shè)置
Datemen->setPosition(ccp(0,275));
men->setPosition(ccp(210,275));
this->addChild(menu,2);
return true;
}
CCScene* Setting::scene()
{
CCScene *p = CCScene::create();
Setting* pMenu = Setting::create();
p->addChild(pMenu);
return p;
}
void Setting::SetBack(CCObject*)
{
LL->switchTo(0);//這里不得不說一下,switchTo激活層,數(shù)字0粗略的認(rèn)為是下標(biāo)吧,我蒙著填寫的,結(jié)果好用,好吧,無話可說!
}
void Setting::Datatongji(CCObject*)
{
LL->switchTo(1);
}
void Setting::Makemen(CCObject*)
{
LL->switchTo(2);
}
看一下不一樣的結(jié)果吧
想必大家看到結(jié)果圖是,要吐槽的心情已經(jīng)很復(fù)雜了,沒添加其它精靈也就算了,居然連按鈕也應(yīng)付,呵呵,就那么個(gè)意思吧,哪位大神要是實(shí)在看我的代碼看不下去了,敬請(qǐng)批評(píng)!
好嘞,完工,迅速消失在茫茫人海中......
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。