前面我们讲到了界面的制作,里面用到了FuWuQiBase这个类。
这个类主要就是我们服务器列表里某一个服务器信息的展示包装。
下面我直接贴代码://FuWuQiBase.h
#ifndef _FUWUQI_BASE_
#define _FUWUQI_BASE_
#include "cocos2d.h"
#include "myLabel/MyLabel.h"
#include "myUI/MyButton.h"
#include "myUI/myCheckUI.h"
USING_NS_CC;
class FuWuQiBase : public Sprite
{
public:
FuWuQiBase();
~FuWuQiBase();
static FuWuQiBase* createFuWuQiSprite(int fwq_id, bool isSelect, std::string& fwq_name, std::string& fwq_ip, int fwq_port, int fwq_status, int fwq_User); //包装一个服务器区服
virtual bool init(int fwq_id, bool isSelect, std::string& fwq_name, std::string& fwq_ip, int fwq_port, int fwq_status, int fwq_User);
//参数:【服务器ID ,是否选中 ,服务器名称 ,服务器ip , 服务器端口号,服务器开关状态, 服务器网络人数】
void callBackStatus();//选中状态
void callBackStatusOff();//非选择状态
std::string getFWQStatus(int _status);//返还服务器的状态文字
int getNetStatus(int _user);//根据服务器在线人数计算网络状态
virtual void updateOnce(float dt);
//--------外部调用接口------
int getFWQID();//获取当前选中的区服id
std::string getFWQName();//获取当前选中的服务器名称
std::string getFWQIp();//ip
int getFWQPort();//
int getFWQStage();//获取当前选中服务器网络状态
int getServerNetStage();//
std::string getServerIpPort();//
private:
//------------------------
//选中区服ID
int tmp_fwq_id;
//选中区服的名称
std::string tmp_fwq_name;
//选中区服的Ip
std::string tmp_fwq_ip;
//选中区服的端口号
int tmp_fwq_port;
//选中区服的服务器状态
int tmp_fwq_status;// 开启 或者 关闭
//选中区服的用户数
int tmp_fwq_User;
//选中服务器的网络流畅状态
int tmp_fwq_net;//
//---ip:port
std::string tmp_server_ip_port;
//--------------------------------
Sprite* fwq_bg; //区服的选中背景图片
Sprite* sprite_status; //区服的选中状态
Sprite* sprite_status_bg; //区服的选中状态背景
MyLabel* fwq_name_label; //服务器名称
MyLabel* fwq_status_label; //服务器状态提示文字
bool select_statys; //选中状态
};
#endif
cpp文件实现。。//FuWuQiBase.cpp
#include "FuWuQiBase.h"
#include "myPublicData/myPrintfDefine.h"
FuWuQiBase::FuWuQiBase()
: fwq_bg(nullptr)
, sprite_status(nullptr)
, sprite_status_bg(nullptr)
, fwq_name_label(nullptr)
, fwq_status_label(nullptr)
, tmp_fwq_id(0)//服务器id
, tmp_fwq_name("")//服务器名称
, tmp_fwq_ip("")//服务器ip
, tmp_fwq_port(0)//服务器端口号
, tmp_fwq_status(1)//服务器开启关闭状态
, tmp_fwq_User(0)//服务器用户在线人数
, tmp_fwq_net(0)//网络流畅
, select_statys(false)
, tmp_server_ip_port("")
{
}
FuWuQiBase::~FuWuQiBase()
{
}
FuWuQiBase* FuWuQiBase::createFuWuQiSprite(int fwq_id, bool isSelect, std::string& fwq_name, std::string& fwq_ip, int fwq_port,int fwq_status, int fwq_User)
{
FuWuQiBase *sprite = new (std::nothrow) FuWuQiBase();
if (sprite && sprite->init(fwq_id, isSelect, fwq_name, fwq_ip, fwq_port,fwq_status, fwq_User))
{
sprite->autorelease();
return sprite;
}
CC_SAFE_DELETE(sprite);
return nullptr;
}
bool FuWuQiBase::init(int fwq_id, bool isSelect, std::string& fwq_name, std::string& fwq_ip, int fwq_port, int fwq_status, int fwq_User)
{
if (!Sprite::init())
{
return false;
}
tmp_fwq_id = fwq_id;//服务器id
tmp_fwq_name = fwq_name;//服务器名称
tmp_fwq_ip = fwq_ip;//服务器ip
tmp_fwq_port = fwq_port;//服务器端口号
tmp_fwq_status = fwq_status;//服务器开启关闭状态
tmp_fwq_User = fwq_User;//服务器网络用户数
select_statys = isSelect;//选中状态
tmp_fwq_net = getNetStatus(fwq_User);
//选中的背景图
fwq_bg = Sprite::create();
fwq_bg->setAnchorPoint(Vec2(0, 0.5));
fwq_bg->setPosition(Vec2(-40, 0));
this->addChild(fwq_bg);
if (isSelect)
{
fwq_bg->setTexture("myui/login/fu_gaoliang.png");
}
//区服的选中状态
sprite_status = Sprite::create("myui/login/fu_dong.png");
sprite_status->setPosition(fwq_bg->getPosition() + Vec2(70, 0));
this->addChild(sprite_status);
//服务器名称
fwq_name_label = MyLabel::createWithTTF(fwq_name, g_strDefaultTTFPath, 30);
fwq_name_label->setPosition(sprite_status->getPosition() + Vec2(40, -20));
fwq_name_label->setTextColor(cocos2d::Color4B(255, 222, 0, 255));
//fwq_name_label->enableOutline(cocos2d::Color4B(255, 255, 255, 255), 2);
//fwq_name_label->setAlignment(cocos2d::TextHAlignment::LEFT, cocos2d::TextVAlignment::CENTER);
fwq_name_label->setAnchorPoint(cocos2d::Vec2::ANCHOR_BOTTOM_LEFT);
this->addChild(fwq_name_label);
//爆满 RGB(221,0,0) 拥挤RGB(221,124,0) 良好RGB(0,255,204) 畅通RGB(6,255,0)
//服务器网络状态提示文字
fwq_status_label = MyLabel::createWithTTF(getFWQStatus(tmp_fwq_net), g_strDefaultTTFPath, 30);
if (1 == tmp_fwq_net)
{
//爆满 RGB(221,0,0)
fwq_status_label->setTextColor(cocos2d::Color4B(221, 0, 0, 255));
}
else if (2 == tmp_fwq_net)
{
//拥挤RGB(221,124,0)
fwq_status_label->setTextColor(cocos2d::Color4B(221, 124, 0, 255));
}
else if (3 == tmp_fwq_net)
{
//良好RGB(0,255,204)
fwq_status_label->setTextColor(cocos2d::Color4B(0, 255, 204, 255));
}
else
{
//畅通RGB(6, 255, 0)
fwq_status_label->setTextColor(cocos2d::Color4B(6, 255, 0, 255));
}
//fwq_status_label->enableOutline(cocos2d::Color4B(255, 255, 255, 255), 2);
//fwq_status_label->setAlignment(cocos2d::TextHAlignment::LEFT, cocos2d::TextVAlignment::CENTER);
fwq_status_label->setAnchorPoint(cocos2d::Vec2::ANCHOR_BOTTOM_LEFT);
fwq_status_label->setPosition(fwq_name_label->getPosition() + Vec2(170, 0));
this->addChild(fwq_status_label);
scheduleOnce(schedule_selector(FuWuQiBase::updateOnce), 0.1f);//执行一次更新
return true;
}
void FuWuQiBase::callBackStatus()
{
select_statys = true;
scheduleOnce(schedule_selector(FuWuQiBase::updateOnce), 0.1f);
}
void FuWuQiBase::callBackStatusOff()
{
select_statys = false;
scheduleOnce(schedule_selector(FuWuQiBase::updateOnce), 0.1f);
}
std::string FuWuQiBase::getFWQStatus(int _status)
{
switch (_status)
{
case 1:
return "baoman";
break;
case 2:
return "yongji";
break;
case 3:
return "lianghao";
break;
default:
return "liuchang";
break;
}
}
int FuWuQiBase::getNetStatus(int _user)
{
if (1000<_user>
{
tmp_fwq_net = 1;
}
else if (600<_user>
{
tmp_fwq_net = 2;
}
else if (200
{
tmp_fwq_net = 3;
}
else
{
tmp_fwq_net = 4;
}
return tmp_fwq_net;
}
void FuWuQiBase::updateOnce(float dt)
{
if (select_statys)
{
fwq_bg->setTexture("myui/login/fu_gaoliang.png");
sprite_status->setTexture("myui/login/select.png");
}
else
{
fwq_bg->setTexture("");
sprite_status->setTexture("myui/login/fu_dong.png");
}
}
int FuWuQiBase::getFWQID()
{
return tmp_fwq_id;
}
std::string FuWuQiBase::getFWQName()
{
return tmp_fwq_name;
}
std::string FuWuQiBase::getFWQIp()
{
return tmp_fwq_ip;
}
int FuWuQiBase::getFWQPort()
{
return tmp_fwq_port;
}
int FuWuQiBase::getFWQStage()
{
return tmp_fwq_status;
}
int FuWuQiBase::getServerNetStage()
{
return tmp_fwq_net;
}
std::string FuWuQiBase::getServerIpPort()
{
tmp_server_ip_port = "http://" + tmp_fwq_ip +":"+ CStrTool::Number2String(tmp_fwq_port)+"/";//包装服务器地址
return tmp_server_ip_port;
}
这里包装了我们的单个服务器的一些界面的展示。根据注释就可以看出来具体用法。这里根据服务器的人数来展示当然服务器的流畅度描述。