游戏服务器系统的选择界面,cocos2dx网游选服界面制作三:服务器单个item界面包装...

前面我们讲到了界面的制作,里面用到了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;

}

1470024548541543.png

这里包装了我们的单个服务器的一些界面的展示。根据注释就可以看出来具体用法。这里根据服务器的人数来展示当然服务器的流畅度描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值