这几天看了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,追加在对话层的底端
向服务端发起一个请求

最新文章

  1. 从零开始山寨Caffe·柒:KV数据库
  2. Understand Lambda Expressions in 3 minutes(翻译)
  3. asp.net教程:编译错误同时存在于不同dll中
  4. Android Sqlite 数据库版本更新
  5. linux入命令基础
  6. wenti
  7. Macbook pro内存升级
  8. 《自学C语言》初级教程 - 目录
  9. Web前端/后端
  10. 在远程服务器上完成本地设备的程序烧写和调试(基于vivado ,SDK软件)
  11. poj 1039 Pipe(几何基础)
  12. php ob_ 开头的相关函数
  13. 并发视频,怎么hold住高并发
  14. systrace跟踪 Android性能优化
  15. 关于IE的兼容模式
  16. EF结合SqlBulkCopy
  17. elasticsearch 不能通过9200端口访问
  18. 关于IntelliJ IDEA删除项目
  19. QWebView加载网页
  20. MySQL数据库——安装教程(5.7版本)

热门文章

  1. 心情记录&考试总结 3.30
  2. phpcms V9首页 频道页 列表页 推荐位 简单获取文章浏览量和评论统计
  3. Case Study: Random Number Generation(翻译教材)
  4. 写Java程序要体现面向对象
  5. 配置centos 7 mysql
  6. ifdebug
  7. php整理(四): mysql
  8. hibernate中的SessionFactory,Session分别表示什么啊?如何理解?
  9. Android开发之定义app在手机的安装位置
  10. Android中ProgressDialog的简单示例