关于android和cocos2d

  凭着对大学时候写html+css的一点点的记忆,我还是认为android的布局xml文件还是参考了html+css,只是他更加臃肿!就想 android平台本身那样,当然这也无可厚非,因为他要兼容很多东西,试想有一天android只有几款机型的时候,也许在布局上也就不会这样设计了! (ps:想起来微博上一个博友抱怨,写了一个简单的管理客户端,布局文件居然达到了1w行,要知道有效代码才8k行!)

  在刚开始写android的时候,最担心的就是分辨率的问题了,可是后来却没有发生过这种情况。因为几乎在产生差异的地方我都是使用的相对布局,比如weight或者relativeLayout等等。用这些特性抹掉不同机型造成的差异!

  现在转过头来写cocos2d,简直不能理解为什么要这样设计!觉得还是相对布局的好!可是熟悉了cocos2d的缩放和描点才知道,cocos2d的这样设计的妙处!看似绝对其实是相对的!首先声明下,我没有使用cocos2d提供的布局工具,而是自己手写布局!基本上是从下向 上,再从左到右,这样一个控件挨着一个控件,他的坐标他的位置都很好控制!这似乎也是一种相对的模式!

  关于http和tcp协议!

  在写一个扑克类游戏的时候,客户端选择了跨平台的cocos2d!首先没有选择unity3d是因为不想再写C#去了(大学的时候有写过),也不想写js(实在无法忍受js的语法)!再者大学毕业头几年其实一直在写C++,这几年一直写java后端和php服务器,对C++都有些生疏了,还有一些底层的socket api,在写这个cocos2d的客户端的时候,又从新找回了之前熟悉的网络编程,而且是跨平台的,话说之前写服务器一般也只是用在linux上!cocos2d的客户端因为要跑在ios上,android上,还有跑在win32上(调试的时候),所以需要一个跨平台的网络库!当然如果怕麻烦的话,可以只用socket相关的,而不介入的select模型,不过我还是引入了!为了处理的方便,我把select函数放在了每一个layer的update中!而不是单独新建一个新的线程,这样避免了同步上的问题!

  我们知道http是基于tcp协议的!做了封装,所以原理很简单;可是简单的原理缺造成了逻辑设计上的困难!因为在tcp中可以服务器主动推送的消息,全部需要客户端来定时主动拉取!客户端定时的时间还不能太长(这样会造成卡顿),也不能太短(造成客户端的卡顿和带宽的损耗)!我们之前的设计是定时器的时间为0.7秒!哎,还奇葩的数字!可能很多同学会说,http也可以做长连接!可是大家有没有想过,如果手机连的是wifi还好,支持长连接;但是如果手机连的是移动网络,那么移动会有一个http的代理!即使你的客户端和服务器都支持http长连接,代理不支持,也是没有办法!

  还有就是,为了节省带宽和避免卡顿,在使用http连接的时候,常常很多消息封装在一次http交互中!体现在代码中就是混淆了逻辑,而使用tcp协议就能很好的避免这个问题,没有卡顿!打一个比方:一个玩家跟注!服务器处理的时候,首先要处理这个玩家状态的更新,再处理轮到下一个玩家! 如果是tcp协议,那么很简单,玩家状态更新一个消息,轮到下一个玩家一条消息;但是如果是http协议就不一样了!客户端主动拉取消息,如果间隔1秒拉取一次,那么两个操作就间隔了一秒,在客户端体验看来就是很差了!除非将这两个操作放在一起,消息也放在一起;但是这样就破坏了函数单一性的职责!

  希望对大家有帮助!

  

转载于:https://www.cnblogs.com/archy_yu/p/4363994.html

最近一段时间开发客户端app的感悟相关推荐

  1. 近段时间利用跑步APP记录路径的两次跑步

    其实跑的挺多,这两次有代表性一点.我一般不跑很多,虽然从初中一直坚持跑步,但是,我觉得一次性运动量太大.对人有害无益.我到现在为止一次性跑步的距离没有超过15km的. --前两天刚刚听说厦门半程马拉松 ...

  2. tomcat服务器一直自动关,项目在tomcat里运行一段时间总是自动崩掉的问题排查与解决...

    最近的检验系统上线一段时间后,发现系统访问不了,tomcat总是会自动崩掉,一般遇到这种问题,程序员的第一反应都肯定是内存溢出. 确实是,但是java里内存分好几种,堆内存.栈内存.静态内存区等等,下 ...

  3. 博客园客户端UAP开发随笔 -- App连接云端内容的桥梁:WebView

    当你辛苦的从网上爬下来一篇文章之后,怎么在你的应用内展示这些包含HTML标记的文章?如果你使用的是Javascript开发应用,恭喜你,直接塞进页面就可以了,同时说明你很熟悉页面开发,而现在windo ...

  4. 至简微博Android客户端APP开发以及源码

    前言 至简微博客户端APP根据微博开放品台API获取微博内容,UI展示 主要功能点: 好友微博列表 公共微博列表 微博详情 用户个人信息 微博个人信息 微博评论列表 每日一图 粉丝列表 关注列表 关注 ...

  5. app开发周期需要多久 开发一个app要多长时间

    在移动互联网时代,手机成为主要的工具,各式各样的App快速改变着大家的生活,手机App开发自然成了市场热门需求.但是App开发技术门槛比较高,很多人并不了解细节.开发制作一款专业的手机App大概需要多 ...

  6. Android开发:app工程集成银联支付功能(客户端)

    Android开发:app工程集成银联支付功能(客户端) email:chentravelling@163.com 上一篇博文完成了服务器端的集成,可参考: Android开发:app工程集成银联支付 ...

  7. 阿里程序员跳槽到小外企,再无996!业余时间开发APP,每月广告收入8万多!堪比阿里P8!...

    大家都在追求工资以外的睡后收入,希望实现财富自由.有人在互联网大厂辛辛苦苦996挣钱,有人却能找到捷径顺利实现梦想.一个程序员小哥哥就从阿里跳到了一家小外企,虽然工资少了,但再也不用加班,他利用业余时 ...

  8. cefsharp项目开发浏览器运行一段时间后cefsharp.browsersubprocess崩溃问题

    基于cefsharp项目用C#开发的程序在windows 系统上运行一段时间老是出现崩溃卡死的情况 如下图: 经过多次测试和调查 发现是在部分机器上才出现该问题 ,其他机器连续运行一周也无错误出现 研 ...

  9. uni-app app清除app缓存,使用一段时间app数据图片等缓存清理,记录一下

    uni-app  app清除本地的缓存,app使用一段时间缓存数据导致app卡顿,清理缓存 记录一下操作 设置里面有清理缓存按钮,点击按钮清除缓存 export default {components ...

最新文章

  1. JAVA WEB新进展
  2. Java Se:自定义ClassLoader
  3. C++ :: 范围解析运算符
  4. 好语言,就该善用它——《C++语言的设计与演化》读书笔记
  5. 【渝粤教育】国家开放大学2018年春季 0269-21T文学概论 参考试题
  6. stm32f103c8t6 AD DMA连续采集8个通道
  7. 制作了一个WMI 查询分析工具
  8. Redis的5大Value的使用场景
  9. azure api 管理_使用API​​使用Azure Cosmos DB进行图形数据库实现
  10. 网吧赚钱靠什么不求人
  11. 孟小峰:大数据管理系统的发展与机遇
  12. matlab画图基本命令
  13. rtk采点后如何导入cad_CAD图片导入:如何对JPG图片进行描图
  14. [汇编语言]立即数寻址和寄存器寻址
  15. 深入理解:面向服务与微服务架构
  16. 插曲(1)dht11的连接
  17. 复盘红米手机慢问题,针对小米手机 miui系统优化设置,实测红米note8,和k20 pro可行,流畅度起码提升了20%,能马上感觉到。
  18. ajax 异步刷新表格
  19. 金融行业移动信息化解决方案
  20. htc Vive中VR界面闪烁的解决

热门文章

  1. NHibernate初学者指南(1):开篇
  2. devops 成长路线
  3. 徒手撸框架--实现 RPC 远程调用
  4. html2canvas如何在元素隐藏的情况下生成截图
  5. 使用pyinstaller打包,subprocess报“句柄无效”错误的解决方法
  6. c++:用顺序表实现简单的栈
  7. sql server2005 常用语句
  8. SUSE下双网卡IP同网段的烦恼
  9. gbk与utf-8的区别
  10. YOLO系列:YOLO v1深度解析