91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用CClayerMultiplex實現層切換

發布時間:2020-07-10 16:47:34 來源:網絡 閱讀:624 作者:51tushu 欄目:開發技術

在使用之前,我們的先看一下用這個能實現什么效果,大家應該都玩過保衛蘿卜吧,我們就用CClayerMultiplex,實現一下保衛蘿卜的設置界面。

使用CClayerMultiplex實現層切換使用CClayerMultiplex實現層切換使用CClayerMultiplex實現層切換


是不是點擊,選項,數據統計,制作方界面都會變,可能有的小伙伴會想,我用多個類也能實現,或者我用類似選關的方法,讓層左右滑動唄,當然都可以......我只是講例子(當然實際作出來的效果和原版很差距,上面只有3個層背景)

首先,我們先查看一下官方是怎么用這玩意的

CCLayerMultplex:可以包含好幾個layer,但是只顯示一個layer,可以實現多個Layer之間的切換

官方示例是這樣的

在.h中

//實現多層切換的CCLayerMultiplex對象  

 CCLayerMultiplex* multi;

在.cpp中

//設置窗口的背景顏色為綠色

CCLayerColor* layer1 = CCLayerColor::create(ccc4(0, 255, 0, 255));

//設置窗口的背景顏色為紅色
CCLayerColor* layer2 = CCLayerColor::create(ccc4(255, 0, 0, 255));
 //多層
multi = CCLayerMultiplex::create(layer1, layer2, NULL);
//multi->switchTo(1);
addChild(multi);

奧,這樣一看,這個家伙好像一個有特定功能的控制器,把層擺放好,每一個做好標記

那我也借鑒一下,試試

注:因為我也是剛剛學習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*);//設置按鈕的回調函數
 void Datatongji(CCObject*);//數據統計
 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();
 //-----獲取坐標和錨點--------
 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");
 //-----添加三個層,使用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);
 //-----添加按鈕--------------
 //選項按鈕
 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);
 //數據統計
 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));//不要在意這些數字,要根據你自己做的demo設置
 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激活層,數字0粗略的認為是下標吧,我蒙著填寫的,結果好用,好吧,無話可說!

}
void Setting::Datatongji(CCObject*)
{
    LL->switchTo(1);
}
void Setting::Makemen(CCObject*)
{
 LL->switchTo(2);
}

看一下不一樣的結果吧

使用CClayerMultiplex實現層切換使用CClayerMultiplex實現層切換使用CClayerMultiplex實現層切換

想必大家看到結果圖是,要吐槽的心情已經很復雜了,沒添加其它精靈也就算了,居然連按鈕也應付,呵呵,就那么個意思吧,哪位大神要是實在看我的代碼看不下去了,敬請批評!

好嘞,完工,迅速消失在茫茫人海中......

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郑州市| 钦州市| 皮山县| 西乌珠穆沁旗| 工布江达县| 博白县| 和平县| 旺苍县| 昌宁县| 商水县| 灌云县| 阿瓦提县| 得荣县| 威海市| 平陆县| 新野县| 巴林右旗| 荥经县| 专栏| 无极县| 杭锦后旗| 闻喜县| 东乌珠穆沁旗| 峡江县| 富阳市| 浙江省| 阜宁县| 金秀| 改则县| 麻城市| 海林市| 清苑县| 盐津县| 大宁县| 信宜市| 新疆| 平罗县| 方城县| 格尔木市| 桃源县| 大埔区|