cocos2dx网游选服界面制作三:服务器单个item界面包装
首页 > cocos2dx专栏 > cocos2dx学习    作者:闭眼就天黑   2016年8月1日 11:35 星期一   热度:3484°   百度已收录  
时间:2016-8-1 11:35   热度:3484° 

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

QQ截图20160801120632.png

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

二维码加载中...
本文作者:闭眼就天黑      文章标题: cocos2dx网游选服界面制作三:服务器单个item界面包装
本文地址:https://www.byjth.com/biji/81.html
版权声明:若无注明,本文皆为“闭眼就天黑专栏_技术博客_个人学习总结”原创,转载请保留文章出处。
相关文章

版权所有:《闭眼就天黑专栏_技术博客_个人学习总结》 => 《cocos2dx网游选服界面制作三:服务器单个item界面包装
本文地址:https://www.byjth.com/biji/81.html
除非注明,文章均为 《闭眼就天黑专栏_技术博客_个人学习总结》 原创,欢迎转载!转载请注明本文地址,谢谢。

返回顶部    首页    手机版本    版权所有:闭眼就天黑专栏_技术博客_个人学习总结
    站长: 闭眼就天黑    搜索cocos2dx主题 技术支持:闭眼就天黑   皖ICP备14007736号-1  

皖公网安备 34132102000107号

   sitemap