关于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秒拉取一次,那么两个操作就间隔了一秒,在客户端体验看来就是很差了!除非将这两个操作放在一起,消息也放在一起;但是这样就破坏了函数单一性的职责!

  希望对大家有帮助!

  

最近一段时间开发客户端app的感悟的更多相关文章

  1. WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转)

    WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转) Windows Communication Foundation (WCF)是Microsoft为构建面向服务的应用提供的分布式通信 ...

  2. 关于近段时间论坛型APP 的一段舍弃

    一直以为缓存务必要做的很好,好到什么程度呢,我曾这样想,用户在下滑数刷新的时候也要做到,先加载久缓存再加载新的,同时只改变旧的某些项.这样的想法真的很好!好到我花费了三天去设计数据库和服务器的 php ...

  3. 关于这段时间学习 EntityFramework的 一点感悟

    Ado.Net,用了N多年,Entity Framework也关注了很多年. 每当项目转型的时候,就花费大巴的时间,学习一番,潮流的东西. 这个Orm很多,这个EF很火,这么多年了,我还是不敢用,虽然 ...

  4. 闲暇时间开发的个人app

    最近一段时间公司不是很忙,晚上基本没怎么加班.所以自己利用晚上在家的时间开发了一个app(奇趣营),其实自从转android开发以来,就有想过要自己开发一个app.一方面可以提升自己的经验:另一方面可 ...

  5. 我想外包开发一个APP,需要多少钱,多少时间?

    在一个阳光明媚的下午,我正瘫坐在椅子上改bug.忽然有人给我发微信:“我想做个app,多长时间,多少钱?” 从我从业iOS开发到现在,这个问题被问过无数次,比那句:“你是程序员,那你会修电脑吗?”还要 ...

  6. # 【ARM-Linux开发】在Win7的电脑上直接运行安装Ubuntu14.04发生的问题 标签(空格分隔): 【Linux开发】 --- > 一段时间以来,一直是在Windows上安装虚拟机

    [ARM-Linux开发]在Win7的电脑上直接运行安装Ubuntu14.04发生的问题 标签(空格分隔): [Linux开发] 一段时间以来,一直是在Windows上安装虚拟机,然后安装Ubuntu ...

  7. 【Qt开发】Qt让线程休息一段时间

    Qt 为何没有提供 Sleep 论坛上不时见到有人问: Qt 为什么没有提供跨平台的 sleep 函数? 使用平台相关的 Sleep 或 nanosleep 以后,界面为什么没有反应? QThread ...

  8. 跨平台移动APP开发进阶(二)HTML5+、mui开发移动app教程

    前端开发APP,从HBuilder开始~ 序 通过 HTML5 开发移动App 时,会发现HTML5 很多能力不具备.为弥补HTML5 能力的不足,在W3C 中国的指导下成立了www.HTML5Plu ...

  9. web前端工程师在移动互联网时代里的地位问题 为啥C/S系统在PC端没有流行起来,却在移动互联网下流行了起来 为啥移动端的浏览器在很多应用里都是靠边站,人们更加倾向于先麻烦自己一下,下载安装个客户端APP

    web前端工程师在移动互联网时代里的地位问题 支付宝十周年推出了一个新产品:支付宝的十年账单,我也赶个时髦查看了一下我的支付宝十年账单,哎,感慨自己真是太屌丝了,不过这只是说明我使用淘宝少了,当我大规 ...

随机推荐

  1. css/js在线压缩工具

    http://tool.css-js.com/ 在进行前端的时候,可以参考百度性能监控中心给出的意见: http://developer.baidu.com/apm/index

  2. Flipping elements with WPF

    http://yichuanshen.de/blog/2010/11/13/flipping-elements-with-wpf/ Have you already seen ForgottenTim ...

  3. 一篇文章,读懂 Netty 的高性能架构之道

    原文 Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机 ...

  4. dapper 操作类封装

    using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using S ...

  5. 申请Payoneer美国万事达信用卡,可获得一个美国虚拟银行账户,立即注册可得25美元

    申请Payoneer美国万事达信用卡,可获得一个美国虚拟银行账户,可以在国内任意一个支持万事达的ATM.POS机上取现和刷卡消费.Payoneer可以网上购物,购买国外的产品,对我们有一个好处就是利用 ...

  6. [AX2012]Report data provider调试

    运行使用RDP作为数据源的报表时,RDP类被编译成.NET的服务调用,RDP是X++的代码,它的调试是在MorphX调试器中完成.要在MorphX调试器中调试RDP的X++代码需要以下配置: 添加AO ...

  7. WinDbg 命令集锦

    //断点相关 bp + 地址 设置断点bl  显示已经设定的断点bu + 地址 设置断点,但是这种类型断点再下一次启动时被记录bc 清除断点对于断点范围,可以用*匹配,-表示一个范围,表达多个可用,号 ...

  8. Backbone之旅——Model篇

    Backbone作为前端的MVC框架,把后端的设计思想带到前端,使前端代码更加清晰.可维护性大大提高 Backbone依赖于underscore.js和jquery,所以在使用backbone的时候一 ...

  9. 学习使用:before和:after伪元素

    如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注.特别是在Nicolas Gallagher的博客中,后期运用了很多伪类元 ...

  10. 微信、qq时间格式模板

    产品近来蛋疼,时间格式从做完到现在改了四遍了 ,最新的要求如下: * 2分钟内 无显示 * 2分钟-24小时 HH:mm * 昨天 昨天 HH:mm * 前天 前天 HH:mm * 今年 MM:DD ...