小伙伴们今天晚上我要给大家讲讲cocos2dx之关卡开发,这里自己先看代码我里面写的很清楚了不懂的可以留言问我 我后续还有说明时间紧迫我暂时就不多写了,下次我在重点讲解
#ifndef __MISSIONUI_HEADER__
#define __MISSIONUI_HEADER__
#include <typedef.hpp>
#include <cocos-base.h>
#include <cocos-widget.h>
#include <ScreenUtil.hpp>
#include <CMisc.hpp>
#include <Facade.hpp>
#include <Language.hpp>
#include <TextButton.hpp>
#include <MissionDialogUi.hpp>
CLIENT_NS_BEGIN;
USING_NS_CC;
using namespace cocos2d::cocoswidget;
//关卡UI
enum MissionUiBtn
{
tagTurnBack,
tagStageNormal,
tagStageElite,
tagStageTeam,
tagTurnLeft,
tagTurnRight,
tagShowDialog
};//Button tag
//todo
struct MissionData
{
int id;
int star;
int result;
};
// enum MissionType
// {
// MISSION_TYPE_NORMAL,
// MISSION_TYPE_HARD,
// MISSION_TYPE_GUILD,
//
// MISSION_TYPE_MAX
// };//关卡类型枚举
class CustomsPassUi : public CSceneExtension
{
public:
CREATE_SCENE_FUNC(CustomsPassUi)
CustomsPassUi();
virtual ~CustomsPassUi();
virtual void onLoadResources();
virtual void onLoadResourcesCompleted();
virtual void onLoadScene();
virtual void onEnterScene();
virtual void onExitScene();
void onLoadChild();
void caseClick();
void arrowClick(int i_arrowType);
protected:
private:
CC_SYNTHESIZE(int, n_xMissionType, MissionType);
//pageIndex
int curtIndex;
// PageView Contener
CWidgetWindow* m_pWindow;
//ScollView background 's textrue
Texture2D *scollTexture;
CC_SYNTHESIZE_READONLY(cocoswidget::CPageView*, m_pMissionScrView, MissionPage);
//关卡SollView背景图
CC_SYNTHESIZE_READONLY(CCSprite*, m_pScollViewBg,ScollViewBg);
//返回
CC_SYNTHESIZE_READONLY(cocoswidget::CButton*, m_pMissionBackBtn, MissionBack);
// 精英
CC_SYNTHESIZE_READONLY(TextButton*, m_pEliteBtn, MissionElite);
//普通
CC_SYNTHESIZE_READONLY(TextButton*, m_pNormalBtn, MissionNormal);
//TeamButton
CC_SYNTHESIZE_READONLY(TextButton*, m_pMissionTeam, MissionTeam);
//TurnLeft
CC_SYNTHESIZE_READONLY(cocoswidget::CButton*, m_pTurnLeft, MissionLeft);
//Turn Right
CC_SYNTHESIZE_READONLY(cocoswidget::CButton*, m_pTurnRight, MissionRight);
private:
Ref* pageviewDataSource(Ref* pConvertCell, unsigned int nPageIdx);
void onPageChanged(Ref* pObject, unsigned int nPageIndx);
void showDialogBack(CCObject* pSender);
};
APP_NS_END
#endif __MISSIONUI_HEADER__
#include "MissionUi.hpp"
#include <MissionMediator.hpp>
#include <Scale9Sprite.h>
CLIENT_NS_BEGIN
CustomsPassUi::CustomsPassUi() :
m_pScollViewBg(nullptr),
m_pMissionScrView(nullptr),
m_pMissionBackBtn(nullptr),
m_pEliteBtn(nullptr),
m_pNormalBtn(nullptr),
n_xMissionType(1),
curtIndex(0)
{
setCachable(true);
setAutoRemoveUnusedTexture(true);
}
CustomsPassUi::~CustomsPassUi()
{
}
void CustomsPassUi::onLoadResources()
{
addImageAsync("Common/bg.jpg");
addImageAsync("MissionUi/stage-map-elite-frame.jpg");
addImageAsync("MissionUi/stage-map-elite-frame_alpha_mask.png");
addImageAsync("MissionUi/stage-map-frame.jpg");
addImageAsync("MissionUi/stage-map-frame_alpha_mask.png");
addImageAsync("MissionUi/stageselect_map_bg_1.jpg");
addImageAsync("MissionUi/stageselect_map_bg_2.jpg");
addImageAsync("MissionUi/stageselect_map_bg_3.jpg");
addImageAsync("MissionUi/stageselect_map_bg_4.jpg");
addImageAsync("MissionUi/stageselect_map_bg_5.jpg");
addImageAsync("MissionUi/stageselect_map_bg_6.jpg");
addImageAsync("MissionUi/stageselect_map_bg_7.jpg");
addImageAsync("MissionUi/stageselect_map_bg_8.jpg");
addImageAsync("MissionUi/stageselect_map_bg_9.jpg");
addImageAsync("MissionUi/back_normal.png");
addImageAsync("MissionUi/back_seleted.png");
addImageAsync("MissionUi/button_normal.png");
addImageAsync("MissionUi/button_selected.png");
addImageAsync("MissionUi/nextbtn.jpg");
addImageAsync("MissionUi/nextbtn_alpha_mask.png");
}
void CustomsPassUi::onLoadResourcesCompleted()
{
}
void CustomsPassUi::onLoadScene()
{
this->removeAllChildrenWithCleanup(true);
onLoadChild();
}
void CustomsPassUi::caseClick()
{
//scollView的背景图
switch (n_xMissionType)
{
case 1:
{
// normal Textrue
scollTexture = getNewTexture("MissionUi/stage-map-frame.jpg", "MissionUi/stage-map-frame_alpha_mask.png");
}
break;
case 2:
{
// elite Textrue
scollTexture = getNewTexture("MissionUi/stage-map-elite-frame.jpg", "MissionUi/stage-map-elite-frame_alpha_mask.png");
}
break;
case 3:
{
// Team Textrue
}
break;
default:
break;
}
}
void CustomsPassUi::onLoadChild()
{
caseClick();
//背景图
CCSprite *bg = CCSprite::create("Common/bg.jpg");
bg->setPosition(ScreenUtil::getCenter());
addChild(bg);
if (scollTexture!=nullptr)
{
m_pScollViewBg = Sprite::createWithTexture(scollTexture);
m_pScollViewBg->setAnchorPoint(Vec2(0.5, 0));
m_pScollViewBg->setPosition(Vec2(480, 20));
addChild(m_pScollViewBg);
}
//返回按钮
m_pMissionBackBtn = cocoswidget::CButton::create("MissionUi/back_normal.png", "MissionUi/back_seleted.png");
getMissionBack()->setAnchorPoint(ccp(0, 0));
//getBagBack()->setScale(0.8f);
getMissionBack()->setPosition(ccp(60, 570));
getMissionBack()->setTag(tagTurnBack);
this->addChild(getMissionBack());
//普通按钮
m_pNormalBtn = TextButton::create(LANGUAGE_VALUE("Mission_Normal"), "MissionUi/button_normal.png", "MissionUi/button_selected.png");
getMissionNormal()->setPosition(Vec2(480 - 100, 550));
getMissionNormal()->setTag(tagStageNormal);
addChild(getMissionNormal());
//精英按钮
m_pEliteBtn = TextButton::create(LANGUAGE_VALUE("Mission_Elit"), "MissionUi/button_normal.png", "MissionUi/button_selected.png");
getMissionElite()->setPosition(Vec2(480 + 130, 550));
getMissionElite()->setTag(tagStageElite);
addChild(getMissionElite());
//TeamButton
m_pMissionTeam = TextButton::create(LANGUAGE_VALUE("Mission_Team"), "MissionUi/button_normal.png", "MissionUi/button_selected.png");
getMissionTeam()->setPosition(Vec2(480 + 390, 550));
getMissionTeam()->setTag(tagStageTeam);
addChild(getMissionTeam());
//Turn left
m_pTurnLeft = cocoswidget::CButton::create("MissionUi/nextbtn.jpg", "MissionUi/nextbtn_alpha_mask.png");
getMissionLeft()->setPosition(Vec2(20, 320));
getMissionLeft()->setTag(tagTurnLeft);
addChild(getMissionLeft(),1);
//Turn Right
m_pTurnRight = cocoswidget::CButton::create("MissionUi/nextbtn.jpg", "MissionUi/nextbtn_alpha_mask.png");
getMissionRight()->setPosition(Vec2(960 - 30, 320));
getMissionRight()->setTag(tagTurnRight);
addChild(getMissionRight(),1);
m_pWindow = CWidgetWindow::create();
m_pWindow->setMultiTouchEnabled(true);
m_pWindow->setAnchorPoint(ccp(0, 0));
m_pWindow->setPosition(Vec2(10, 30));
addChild(m_pWindow,1);
//ScollView
m_pMissionScrView = CPageView::create(
Size(910, 470),
9,
this,
ccw_datasource_adapter_selector(CustomsPassUi::pageviewDataSource));
m_pMissionScrView->setOnPageChangedListener(this, ccw_pagechanged_selector(CustomsPassUi::onPa