这几天看了libpomelo的cocos2dx客户端
这是个聊天室,由2个场景构成,登录场景LoginScene,聊天场景ChatScene。

一. LoginScene

客户端是以Login场景来启动的
Login场景初始化时
先构造各种控件比如文本框,然后为登录按钮绑定登录回调
 
创建menu及其回调
CCMenuItemLabel *pMenuItem = CCMenuItemLabel::create(label, this, menu_selector(Login::onLogin));
CCMenu *pMenu = CCMenu::create(pMenuItem, NULL);
pMenu->setPosition( CCPointZero );
pMenuItem->setPosition();
this->addChild(pMenu, 1);
 
Login场景的onEnter接口
把dispatchLoginCallbacks注册为主循环调度函数
 
dispatchLoginCallbacks检测pomelo客户端pc是否初始化成功
如果没有,则return
如果初始化成功
则构造新的场景Chat
把刚刚初始化好的参数传递给Chat场景
CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1, pScene));
切换场景
 
当用户输入了用户名和频道名后,开始进入登录过程onLogin
用pomelo的库函数,访问gate接口
设置路由和gate成功的回调requestGateCallback
调用pc_request发起请求
等待请求时,等待线程结束
 
gate的callback
记录下来请求返回包中的connector端口
pc_client_connect(client, &address)
为pc注册各种回调函数:断开,离开,聊天,新加入
pc_request(client, request, route, msg, connect_cb);
 
connector的callback
pomelo_client = req->client;
即登录成功了
调用成功时,把频道里的用户都读过来
现在pomelo_client不为空了
主循环dispatchLoginCallbacks就可以继续了
 
二. ChatScene
 
根据屏幕的可视区域建立按钮
标签-菜单项-菜单,为按钮指定回调函数
创建聊天区域,用一个layer,里面放多个label
创建顶部区域,用一个colorLayer
创建聊天区域,用一个colorLayer
创建发送消息区域,用一个colorLayer
创建发送文本框 m_pTextField->setDelegate(this);
 
ChatScene中,在onEnter中
把Chat::updateUICallback设置成主循环调度
调度中
遍历消息队列
把消息转换成label追加在聊天框里
然后要调整聊天框的位置,上下滚动
 
发送信息的回调函数sendCallback
从文本框获得原始信息
从原始信息区分目标和内容
创建一个label,追加在对话层的底端
向服务端发起一个请求

libpomelo的cocos2d-x客户端使用总结的更多相关文章

  1. 最近一段时间开发客户端app的感悟

    关于android和cocos2d 凭着对大学时候写html+css的一点点的记忆,我还是认为android的布局xml文件还是参考了html+css,只是他更加臃肿!就想 android平台本身那样 ...

  2. CBE引擎概览

    摘录于CBE官方文档:https://www.comblockengine.com/docs/1.0/overview/index/ 架构图总览: Switch Fabric:交换机网络,根据网络环境 ...

  3. MAC 下将libpomelo连接到cocos2d-x

    摘要:借助GYP将libpomelo连接到Cocos2d-x项目并使项目能与服务端成功连接. 配置:OS X 10.9.4 + Xcode 6.0 + Cocos2d-x-3.2 一.部署GYP(Ge ...

  4. cocos2d 如何优化内存使用

    如何优化内存使用 内存优化原理 为优化应用内存使用,开发人员首先应该知道什么最耗应用内存,答案就是纹理! 纹理几乎会占据90%应用内存.所以尽量最小化应用的纹理内存使用,否则应用很有可能会因为低内存而 ...

  5. 【转】频点CTO张成:基于Cocos2d的MMORPG开发经验

    http://www.9ria.com/plus/view.php?aid=27698 作者: zhiyuanzhe3 发表时间: 2013-06-29 17:46 6月29日,由9Tech社区.51 ...

  6. 教你pomeloclient包libpomelo增加cocos2d-x 3.0工程(Windows、Android、IOS平台)

    Windows平台 操作系统:Windows7(64-bit) VS版本号:2013 Cocos2d-x版本号:3.0 project路径:E:\cocos2d-prj\ 1.从github下载lib ...

  7. Cocos2d-X网络编程(4) Cocos2d中的网络通信协议——Socket通信

    Socket,俗称网络套接字,本身并不是协议,而是一个调用接口,是对TCP/IP协议的封装和应用,.提供了一系列方法方便开发者进行网络通讯. TCP/IP协议是使用最早的通讯协议,它是传输层协议,主要 ...

  8. Cocos2d-X网络编程(3) Cocos2d中的网络通信协议——WebSocket协议

    WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信.实现浏览器与服务器的即时通讯.即服务器也能主动向客户端发消息. WebSocket代理类和方法: co ...

  9. Cocos2d-X网络编程(2) Cocos2d中的网络通信协议——http协议

    HTTP协议也叫超文本传输协议.是互联网广泛使用的通信协议,常用于B/S架构中. HTTP连接使用的是短连接形式,也就是"请求-响应"的方式,不仅在请求时需要先建立连接,而且需要客 ...

随机推荐

  1. java nio管道

    管道(Pipe) (本部分原文链接,作者:Jakob Jenkov,译者:黄忠,校对:丁一) Java NIO 管道是2个线程之间的单向数据连接.Pipe有一个source通道和一个sink通道.数据 ...

  2. JTable单元格放自定义控件(一)-如何在JTable的单元格放JPanel

    原文链接:http://blog.sina.com.cn/s/blog_7f1c8c710101hdpf.html 最近自己尝试着模仿着实现一款非常有名的进销库存管理系统(智慧记)里面的一个功能.功能 ...

  3. Android Service实时向Activity传递数据

    演示一个案例,需求如下:在Service组件中创建一个线程,该线程用来生产数值,每隔1秒数值自动加1,然后把更新后的数值在界面上实时显示. 步骤如下:1.新建一个android项目工程,取名为demo ...

  4. 机器学习 —— 概率图模型(学习:CRF与MRF)

    在概率图模型中,有一类很重要的模型称为条件随机场.这种模型广泛的应用于标签—样本(特征)对应问题.与MRF不同,CRF计算的是“条件概率”.故其表达式与MRF在分母上是不一样的. 如图所示,CRF只对 ...

  5. 量化Hacker News 中50天的数据 Quantifying Hacker News with 50 days of data

    Quantifying Hacker News I thought it would be fun to analyze the activity on one of my favorite sour ...

  6. 车牌识别LPR(三)-- LPR系统整体结构

    第三篇:系统的整体架构 LPR系统大体上可由图像采集系统,图像处理系统,数据库管理系统三个子系统组成.它综合了通讯.信息.控制.传感.计算机等各种先进技术,构成一个智能电子系统. 图像采集系统:图像采 ...

  7. ProgressBar 示例及自定义样式

    在layout中使用ProgerssBar,其中使用了自定义的样式 <ProgressBar android:id="@+id/footer_refresh_prgs" st ...

  8. python学习,dict的映射练习

    练习dict的映射 #coding:utf-8 #问题: a->c, b->d, c->e... 现在有结果字符串求原字符串 dict1={'a':'c', 'b':'d', 'c' ...

  9. [NYIST16]矩形嵌套(DP,最长上升子序列)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=16 像套娃一样把矩形套起来.先给矩形从小到大排序,然后做最长上升子序列就行 /* ━━━━ ...

  10. [HDOJ4738]Caocao's Bridges(双联通分量,割边,tarjan)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 给一张无向图,每一条边都有权值.找一条割边,使得删掉这条边双连通分量数量增加,求权值最小那条. ...