这几天看了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. cojs 西瓜 解题报告

    首先我们要知道pick公式 设二维平面内任意多边形面积为S 设多边形内部整点数为a 设多边形边界的整点数为b 则满足S=a+b/2-1 变形得a=S-b/2+1 由期望的线性性质我们把问题转化为 1. ...

  2. Servlet的response输出到页面时乱码的解决方法

    package com.mhb; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servle ...

  3. YASKAWA电机控制(2)---调试

    2015 5 23 基础调试—点动 上次接线由于没有接地,导致外壳带电,非常危险. 由于上次接线端子被弄坏,这次自己重做.由于没有压线钳,只用尖嘴钳把线压近端子,有可能会松动. 接线的时候Lc1.Lc ...

  4. 浅谈PHP自动化代码审计技术

    原文出处: exploit   欢迎分享原创到伯乐头条 0×00 由于博客实在没什么可以更新的了,我就把目前做的事情总结一下,当做一篇博客,主要是谈一谈项目中所运用的一些技术.目前市面上有不少PHP的 ...

  5. java知识积累——单元测试和JUnit(二)

    首先来复习一下几个重要知识点,然后接着进行一些介绍.在上一篇文章中,我曾经贴过下面这张图片: 在Which method stubs would you like to create?这里,现在结合4 ...

  6. 1450. Russian Pipelines(spfa)

    1450 水题 最长路 #include <iostream> #include<cstdio> #include<cstring> #include<alg ...

  7. topcoder srm 610 div2 250

    第一次做tc 的比赛,一点也不懂,虽然题目做出来了, 但是,也没有在比赛的时候提交成功.. 还有,感谢一宁对tc使用的讲解.. 贴一下代码..... #include <cstring> ...

  8. bzoj3252

    简单题,每次取出最长链,然后对于练上每个点x,终点在其子树内的链都要减去a[x] 这显然可以用dfs序+线段树维护 显然每个点只要删一次即可,复杂度是O(nlogn) type node=record ...

  9. HighChart图片本地导出

    Highchart第三方图表控件,导出默认是从官方地址导出,这样在无外网的条件下则导致导出失败,改进如下: 后台导出代码: public partial class HighChart : Syste ...

  10. 用Java Servlets代替CGI

    从网络的早期阶段开始,人们就希望他们的网络服务器不仅能够显示静态文档,通用网关接口(CGI) 扩展了服务器的能力,但其代价是增加了额外的处理进程.FastCGI则把外部CGI 处理进程同网络服务器更紧 ...