这几天看了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. lintcode:next permutation下一个排列

    题目 下一个排列 给定一个整数数组来表示排列,找出其之后的一个排列. 样例 给出排列[1,3,2,3],其下一个排列是[1,3,3,2] 给出排列[4,3,2,1],其下一个排列是[1,2,3,4] ...

  2. Protege汉字不能正常显示问题

    在Protege5.0中有下面的问题: 点击uses,汉字不能正常显示. 在qq群里面问到,可以通过设置label的方式,在对类,子类命名成英语的,点击annotations,在label中设置汉字名 ...

  3. 漫谈C语言及如何学习C语言

    抄自:http://my.oschina.net/apeng/blog/137911 目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3,网络资源 附录 一 ...

  4. Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试

    环境配置: 开启服务器伪静态 本处以apache为例,查看apache的conf目录下httpd.conf,找到下面的代码 LoadModule rewrite_module modules/mod_ ...

  5. Java API —— 泛型

    1.泛型概述及使用 JDK1.5以后出现的机制 泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行.也被称为参数化类型,可以把类型当作参数一样传递过来,在传递过来之 ...

  6. tokudb引擎安装-2

    前言:因为现在tokuDB直接整合到Percona server里面了,下载页面直接跳转到下载Percona Server 页面了.安装方法跟以前不一样了,下面就来看一下新版本怎么安装了 ##准备阶段 ...

  7. The type xxx cannot be resolved. It is indirectly referenced from required .class files

    项目A中引入一个jar包B,在项目A中调用项目B,出现如下错误提示:   大致意思是:这上面所需的包是间接引用的,即A项目调用B项目,B项目又引用了另外一个包C,而这个包现在不在你的A项目的引用中. ...

  8. C#通过代码注册COM组件

    using System; using System.Diagnostics; using Microsoft.Win32; namespace ChuckLu.Utility { public cl ...

  9. git中手动删除的文件如何在git中删除

    在日常开发中,我们可能或手动删除(delete键删除的)一些文件,然而我们本来应该是用git rm fileName命令删除的,但是现在我们手动删除了,那么要如何在git里面讲那些手动删除的文件删除呢 ...

  10. 1137. Bus Routes(dfs)

    1137 做过一样的 怎么又忘了 再一次搜超时 不用回溯 #include <iostream> #include<cstdio> #include<cstring> ...