这几天看了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. 李洪强iOS开发之【Objective-C】09-空指针和野指针

    一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针 ...

  2. lintcode:Minimum Subarray 最小子数组

    题目: 最小子数组 给定一个整数数组,找到一个具有最小和的子数组.返回其最小和. 样例 给出数组[1, -1, -2, 1],返回 -3 注意 子数组最少包含一个数字 解题: 和最大子数组 ,差不多的 ...

  3. js错误:对象不支持此属性或方法

    对象不支持此属性或方法 错误原因: 可能是js的文件名和另外一个文件重复. 也有可能是js里的function和另外一个function名字重复. 也有可能是js里的function和页面的某一元素重 ...

  4. maven项目:Invalid bound statement

    在使用maven做mybatis项目时会遇到这个问题, org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  5. linux快速修改文件夹及文件下所有文件与文件夹权限

    分两部分改属主和权限: 更改权限,递归方式 chmod -R 755 /var/www/html/test.com 更改属主,递归 chown -R apache:apache /var/www/ht ...

  6. 【Android多屏适配】动态改变Listview item高度

    在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...

  7. Android 自定义ActionBar

    Android 3.0及以上已经有了ActionBar的API,可以通过引入support package在3.0以下的平台引用这些API,但这儿呢,完全自定义一个ActionBar,不用引入额外ja ...

  8. 坑爹的Mysql

    本想尝试下如何使用Spring来管理Hibernate的事务,当配置好Spring的配置文件后,进行插入数据,结果报错了,错误是: Mysql Field * doesn't have a defau ...

  9. Hibernate开发之二 映射主键-

    <class name="cn.itcast.e_hbm_id.User" table="user">            <!-- 映射主 ...

  10. 关于PHP 7你必须知道的五件事

    1.今年的计划表已出.PHP 7时间表RFC投票一直通过, PHP 7将在2015年10月发布.尽管有些延迟,但我们还是很高兴它在今年内发布.PHP 7详细时间表由此查看. 2.PHP 要上太空飞船了 ...