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 < _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; }
这里包装了我们的单个服务器的一些界面的展示。根据注释就可以看出来具体用法。这里根据服务器的人数来展示当然服务器的流畅度描述。
本文作者:闭眼就天黑
文章标题: cocos2dx网游选服界面制作三:服务器单个item界面包装
本文地址:https://www.byjth.com/biji/81.html
版权声明:若无注明,本文皆为“闭眼就天黑专栏_技术博客_个人学习总结”原创,转载请保留文章出处。
本文地址:https://www.byjth.com/biji/81.html
版权声明:若无注明,本文皆为“闭眼就天黑专栏_技术博客_个人学习总结”原创,转载请保留文章出处。
相关文章
- Cocos2dx学习笔记9:cocos2dx锚点(Anchor Point)
- Cocos2dx学习笔记5:场景(Scene)
- cocos2d-x中DrawNode常见的图像绘制函数
- xcode可以运行的游戏,VS编译提示代码有未声明的标识符
- Cocos2dx学习笔记12:cocos2dx进度条(ProgressTimer)
- cocos2dx网游选服界面制作四:选服后登陆界面制作
- Cocos2dx学习笔记7:精灵(Sprite)
- Cocos2dx学习笔记1:创建游戏项目解决方案
- cocos2dx shader绘制摆动的小草
- 解决cocos2dx3.2设置FPS安卓帧率不变的问题
版权所有:《闭眼就天黑专栏_技术博客_个人学习总结》 => 《cocos2dx网游选服界面制作三:服务器单个item界面包装》
本文地址:https://www.byjth.com/biji/81.html
除非注明,文章均为 《闭眼就天黑专栏_技术博客_个人学习总结》 原创,欢迎转载!转载请注明本文地址,谢谢。