cocos2dx关卡选择界面设计

原创 2015年06月09日 11:25:52

重点内容 做游戏时候经常用到关卡选择,写了个关卡选择界面逻辑类,关卡解锁,关卡类型显示,打过的关卡星级评定,一共六大关,每个大关10个小关,ui使用cocostudio编辑,代码如下:
LevelSel.h文件
#ifndef _LEVELSEL_H

define _LEVELSEL_H

include “cocos2d.h”

include “cocos-ext.h”

include “global.h”

using namespace cocos2d;
using namespace cocos2d::extension;
class LevelSel : public CCLayer
{
public:
CREATE_FUNC(LevelSel);
bool init();
void selevent(CCObject *pSender, TouchEventType type);
void pageViewEvent(CCObject *pSender, PageViewEventType type);
void update(float delta);
void onEnter();
UIPageView* pageView;
Layout* layout_sel;
void refreshsel(int offset);
void aaaaa();
//////////////////////////////////////////////////////////////////////////
int stars[60];
int presel,cursel;
int curlevel;
};

endif

LevelSel.cpp文件

include “LevelSel.h”

include “Modules/Archive.h”

include “Scene/MapPrepareScene.h”

include “Common/EnterStageDataExchange.h”

include “PropLayer.h”

void LevelSel::refreshsel(int curoffset)
{
UIButton* Upgrade_bt;
char str[128];
for(int i=1000;i<=10000;i+=1000)
{
Upgrade_bt = (UIButton *)(layout_sel->getChildByTag(i));
Upgrade_bt->addTouchEventListener(this, toucheventselector(LevelSel::selevent));
int idx=i/1000-1;
UIImageView* modeuw=(UIImageView*)layout_sel->getChildByTag(i+2);
if(stars[idx+curoffset]>1)
{
//显示数字
Upgrade_bt->loadTextures(“LevelSel_8.png”,”LevelSel_16.png”,”“,UI_TEX_TYPE_PLIST);
Upgrade_bt = (UIButton *)(layout_sel->getChildByTag(i+9));
sprintf(str,”num_%d.png”,idx+1);
Upgrade_bt->loadTextures(str,str,”“,UI_TEX_TYPE_PLIST);
for(int j=0;j<6;++j)
{
layout_sel->getChildByTag(i+3+j)->setVisible(true);
}
for(int j=8;j>5+stars[idx+curoffset]-1;–j)
{
layout_sel->getChildByTag(i+j)->setVisible(false);
}
}
else if(stars[idx+curoffset]==1)
{
//显示当前
Upgrade_bt->loadTextures(“LevelSel_14.png”,”LevelSel_15.png”,”“,UI_TEX_TYPE_PLIST);
for(int j=0;j<3;++j)
{
layout_sel->getChildByTag(i+3+j)->setVisible(true);
}
for(int j=3;j<6;++j)
{
layout_sel->getChildByTag(i+3+j)->setVisible(false);
}
}
else
{
//锁定
Upgrade_bt->loadTextures(“LevelSel_19.png”,”LevelSel_20.png”,”“,UI_TEX_TYPE_PLIST);
for(int j=0;j<6;++j)
{
layout_sel->getChildByTag(i+3+j)->setVisible(false);
}
modeuw->setVisible(false);
}
if(stars[idx+curoffset]>=1)
{
//特殊模式
int levelId=curoffset+idx;
int mode=(CDataSystem::GetLevelParanew(levelId,CGameDB::GetInstance()->GetTable(TABLE_ID_LEVEL_DATA)))->m_completeType;
modeuw->setVisible(true);
if(stars[idx+curoffset]==1)
{
sprintf(str,”LevelSel_1/level_mode_0_1.png”);
modeuw->loadTexture(str);
}
else if(mode==GAME_MODE_NEARWEAPON)//近战模式
{
sprintf(str,”LevelSel_1/level_mode_2_1.png”);
modeuw->loadTexture(str);
}
else if(mode==GAME_MODE_REMOTEWEAPON)//远程模式
{
sprintf(str,”LevelSel_1/level_mode_5_1.png”);
modeuw->loadTexture(str);
}
else if(mode==GAME_MODE_SCATTER)//防御模式
{
sprintf(str,”LevelSel_1/level_mode_3_1.png”);
modeuw->loadTexture(str);
}
else if(mode==GAME_MODE_BALL)//铁球模式
{
sprintf(str,”LevelSel_1/level_mode_4_1.png”);
modeuw->loadTexture(str);
}
else if(mode==GAME_MODE_BOSS)//BOSS模式
{
sprintf(str,”LevelSel_1/level_mode_1_1.png”);
modeuw->loadTexture(str);
}
else
{
modeuw->setVisible(false);
}
}
//背景图
sprintf(str,”LevelSel_1/level_bk_%d.png”,curoffset/10+1);
((UIImageView*)layout_sel->getChildByTag(i+1))->loadTexture(str);
}
}
bool LevelSel::init()
{
//////////////////////////////////////////////////////////////////////////
for(int i=0;i<60;i++)
{
stars[i]=CArchive::GetInstance()->GetStageUnlock(i);
if(stars[i]==1)
curlevel=i;
}
if(!CGameDB::GetInstance()->GetTable(TABLE_ID_LEVEL_DATA))
CGameDB::GetInstance()->LoadTable(TABLE_ID_LEVEL_DATA, TABLE_TYPE_CSV);
//////////////////////////////////////////////////////////////////////////
UILayer* baseUILayer=cocos2d::extension::UILayer::create();
Layout *widget = dynamic_cast

版权声明:每天进步一点点 https://blog.csdn.net/u011388741/article/details/46424599

Cocos2dx:使用Cocos Studio创建一个简单的工程

首先需要到Cocos官网下载Cocos游戏引擎(Cocos游戏引擎包括了Cocos2d-x和Cocos Studio) Cocos游戏引擎的下载地址 我使用的是最新版本的Cocos引擎 Cocos...
  • ZBJDSBJ
  • ZBJDSBJ
  • 2016-04-12 11:23:30
  • 1652

【玩转cocos2d-x之十五】关卡选择的设计

这节介绍一下游戏中帮助界面和关卡选择的设计,其实都是一样的,关键在于美工。这里采用自定义TableView层来实现。 1.导入头文件和设定空间 因为TableView相关的类是在扩展包里面,所...
  • jackyvincefu
  • jackyvincefu
  • 2013-10-23 09:35:26
  • 7300

cocos2dx3.x《格斗》类游戏实现人物选择界面(二)

先看最终实现的效果图: 由于原本2.x版本的监听事件移植到3.x上面,或许是API改了什么也不知道啊。 创建一个人物选择场景。ChooseHero.h如下: 暂时先定义成这样了,后面再看...
  • coco2d_x2014
  • coco2d_x2014
  • 2017-06-29 19:40:40
  • 1074

cocos2d-x游戏开发系列教程-坦克大战游戏关卡选择场景的编写下

上篇文章写了Paddle类来处理精灵的点击、触摸事件,现在我们在Paddle的基础上写一个MyPaddle类,来处理上一关、下一关、开始游戏按钮的点击事件。1.类声明如下:class MyPaddle...
  • yincheng01
  • yincheng01
  • 2013-12-17 00:41:03
  • 3608

cocos2d-x 关卡选择界面(CCScrollView的使用)

今天要写一个关卡选择界面。 百度了下,采用了CCScrollView来实现。 具体CCScrollView的使用就不介绍了。 百度大把。(关键字: CCScrollView详解) 这里,主要通过...
  • hitwhylz
  • hitwhylz
  • 2014-04-13 17:30:08
  • 4040

cocos2d 游戏选关界面 附源码

1. 选关效果图每页15个,总共45个,每行5个。这些都可以改。源码基于Cocos2d 3.3。2.实现原理反正有源码这里就少讲点了。我看下cocos2d 的 Menu的实现,是一个Layer, 然后...
  • fox64194167
  • fox64194167
  • 2015-01-05 09:40:35
  • 2236

cocos2d-x 游戏关卡选择的设计

  • 2013年10月19日 11:41
  • 182KB
  • 下载

cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第一步---开始界面&关卡选择

***每一步对应的所有代码以及用到的资源都会打包在最后给出 ***为避免代码过多,每一步的代码都做了标记--一看就晓得是第几步实现的避免出错改不回去(难不成还用Git?) ***可以根据设计思路(好吧...
  • ZYY173533832
  • ZYY173533832
  • 2014-08-22 19:30:49
  • 3805

十三 手游开发神器 cocos2d-x editor 之选关滑动界面(ScrollView)

这一节主要是介绍cocos2dx editor的选关滑动界面。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基于cocos2d-x跨平...
  • touchsnow
  • touchsnow
  • 2014-01-25 17:14:49
  • 5443
收藏助手
不良信息举报
您举报文章:cocos2dx关卡选择界面设计
举报原因:
原因补充:

(最多只允许输入30个字)