转自:http://cjhworld.blog.163.com/blog/static/20707803620132693629307/

1.       按照Cocos2d的编程风格,尽量少用构造函数,用init()进行初始化,构造函数可以适当作为变量的初始化,create的静态初始化函数需要重载,即重写create

2.      当需要派生一个新的类时,不能通过父类的create直接创建,具体的可以在debug时从类指针上看到实际类型并不相符

3.      dealloc函数在C++下是析构函数,需要负责安全release各种变量,即使用CC_SAFE_RELEASE来安全释放

4.      内存管理方式

5.      首先必须要注意的一点,在Object-C中对NULL可以进行任何操作而不会报错,而在C++中对NULL进行任何操作都会直接crash

§  使用CC_SAFE_RELEASE来安全release一个类

§  使用CC_SAFE_RETAIN来安全retain一个类

§  @property (nonatomic, retain)对应使用CC_SYNTHESIZE_RETAIN申明一个Public变量,即其他变量都为Private,必须注意这里申明的变量必须是继承自CCObject的。然后这里必须使用set与get才能实现Retain的功能。

CC_SYNTHESIZE(int,level,Level);//这个宏会创建getLevel()和setLevel(int)两个方法。
CC_SYNTHESIZE_RETAIN();//也很容易理解,是具有retain属性的变量。

§  Public变量如需在类创建的时候create,需要retain一次,不能直接使用this->(CCSprite::create(“Icon.png”)

6.      委托机制

由于Object-C的消息机制,我们只要拿到了某一个类的指针,就可以向它发送任何消息,因此即使不实现protocol,也会可以实现委托机制的,但是为了便于管理,我们还是通过实现protocol来实现接口,用来响应某个Delegate回调。在C++中我们没有接口的概念,但是我们可以有多重继承,查看Cocos2d-X的源码也可以找到,通过继承的方式来实现委托的回调。
        例如,我们定义一个动画播放的代理,动画播放完后会回调:

class AnimaDelegate
{
Public:
Virtual void callWhenAnimFinished(){ };
}

这样我们只需要让响应回调的类,继承AnimaDelegate并重写callWhenAnimFinished方法即可。

7.      所有打印信息必须使用CCLog,方便在编译的时候批量隐藏打印到控制台的调试信息

8.     类似getChild之类的方法直接获取到的是CCObject,可以使用强制转换直接转到到原有的格式上即

CCSprite *a = CCSprite::create(“Icon.png”);
this->addChild(a,-,);
CCSprite *b = (CCSprite*)this->getChildByTag();

否则会出现Warning,但强制转换后也会出现问题,例如需要强制转换后的类型不是原类型,进行操作后会crash

9.      CCDictionary与CCArray直接对应-iPhone里经常使用的NSDictionary与NSArray,方法函数也类似。除非只是单纯的int或者float运算,否则尽量不使用STL,-x里均为继承自CCObject的类,有一套完整的内存管理系统,而STL是不包含的,尽量使用CCDictionary与CCArray

10.  CCARRAY_FOREACH使用的时候需要注意测试,遇到过几次莫名其妙无效的情况(希望这个是我的个人问题,但是我遇到N次了,所以就也写在这把)

11.   OpenGL接口在不同平台下可能有细微差异

12.  用到的第三方库务必确定在目标平台是否支持,如pthread库在安卓的支持就是不完整的,在win32上正常的Api换平台后容易崩溃。

cocos2d-x 开发时的注意点的更多相关文章

  1. 【夯实PHP基础】php开发时遇到白页的调试方法

    本文地址   分享提纲: 1. 设置报错报错级别,显示报错 2. 白页的可能原因     1.[设置报错报错级别,显示报错] php开发时,访问地址也对,但就是不出来页面,显示的是 白的页面,所以就可 ...

  2. Golang Web开发时前端出现谜之空白换行的坑

    在使用Golang做Web开发时,有时候渲染出来的模板在前台显示时会出现一些奇怪的空白换行,具体特征就是查看css样式表并没有相关定义的空白部分. 分析: 查看出现问题页面的网页源代码,复制空白换行部 ...

  3. grunt-connect-proxy解决开发时跨域问题

    最近的项目中前后端是完全分离开发的,前端用grunt管理项目.这样就会导致一个问题:开发时前端调用后台的接口时因为不在一个服务器,所以会出现跨域问题.但是也不能用JSONP或CROS方式实现真正的跨域 ...

  4. J2EE开发时的包命名规则

    http://www.blogjava.net/paulwong/archive/2012/04/15/374675.html 转一个J2EE开发时的包命名规则,养成良好的开发习惯 代码编写规范目的: ...

  5. Brophp框架开发时连接数据库读取UTF8乱码的解决(转)

    Brophp框架开发时连接数据库读取UTF8乱码的解决办法 (2012-09-15 10:41:22) 转载▼ 标签: 杂谈 it php 分类: 建站技术 Brophp框架开发时连接数据库读取UTF ...

  6. iOS开发时,在Xcode中添加多个Targets进行版本控制

    在iOS开发中,很可能有以下场景:需要开发多个版本,或因需区分收费版,免费版,或因为网络环境需要区分测试版,发布版,或因渠道不同需要区分企业版,AppStore版等等.解决办法无非就是CheckOut ...

  7. WCF开发时如何选择正确的实例模式(InstanceMode)?

    WCF开发时如何选择正确的实例模式(InstanceMode)?   在使用WCF实例模型时,你是否思考过这几个的问题: ”WCF中的实例模式如何正确应用”? ”使用WCF中的实例模式有何原则可以遵循 ...

  8. cocos2d 游戏开发实战

    文章转自:http://uliweb.clkg.org/tutorial/read/40 6   cocos2d 游戏开发实战 6.1   创建cocos2d项目 6.2   cocos2d v3 & ...

  9. 微信jsSDK公众号开发时网页提示 invalid signature错误的解决方法

    微信公众号开发jsSDK,链接地址不能加?参数,可以通过#传递参数. 不然.页面wx.ready()时就会报错,用 wx.error(function (res) { alert("接口验证 ...

  10. 程序员网站开发时应该注意的SEO问题

    一.链接的统一性 搜索引擎排名最主要的因素就是网站内容和链接,假如网站内部链接不一致,在很大程度上直接影响着网站在搜索引擎中的排名.例如彩票专营店导航栏中的“首页”链接,程序员在开发时可能会有以下几种 ...

随机推荐

  1. FPGA中latency与delay概念的区别

    2013-06-17 21:09:26 最近学习流水线以及状态机,总遇到注入加入寄存器可以分割组合逻辑,从而提高电路的运行频率的说法:还有流水线可以提高速度的说法,刚开始很是疑惑,觉得流水线的方法,输 ...

  2. 不输入密码ssh直接登录阿里云Linux主机

    服务器环境:阿里云云服务器,Linux版本 - CentOS 客户端环境:Mac OSX Terminal 注意: 如果有3个账号都要无密码登录, 则3个账号都要这么操作 在Terminal中用ssh ...

  3. IT国家重点实验室

    软件工程国家重点实验室(武汉大学): http://www.sklse.whu.edu.cn/ 南京大学: http://keysoftlab.nju.edu.cn/ 水声技术国家重点实验室 http ...

  4. poj2352

    纪念树状数组初步(……): 这题已经给了y升序,y相同时x升序,(yeah) 所以容易想到O(n^2)的模拟算法: 其实分析一下就是对于当前xi,统计之前有多少个小于等于xi(因为已经保证了没有相同坐 ...

  5. 【jsonp】

    function handleResponse(response) { alert("You’re at IP address " + response.ip + ", ...

  6. svc 报“由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。“的HTTP 错误 404.3 – Not Found

    原因:系统没有默认为IIS注册WCF服务的svc文件的MIME映射. 解决方法:管理员身份运行C:\Windows\Microsoft.NET\Framework\v3.0\Windows Commu ...

  7. SQL Server 2008 R2主数据服务安装

    SQL Server 2008 R2的主数据服务(Master Data Services,简称MDS)已经放出,目前是CTP版本,微软提供了下载地址: http://www.microsoft.co ...

  8. CF GYM 100703A Tea-drinking

    题意:龙要制作n个茶,每个茶的配方是一个字符串,两个字符串之间有一个差值,这个差值为两个字符串每个对应字母之间差的绝对值的最大值,求制作所有茶时获得的所有差值中的最大值. 解法:克鲁斯卡尔.将茶的配方 ...

  9. 15、NDK开发初步

    一.什么是NDK? NDK是Android让你潜入原生组件(C/C++开发)的一套开发套件 Android应用程序是运行在Dalvik虚拟机中的 ,NDK允许你通过原生代码实现部分的应用程序模块 . ...

  10. FZU 2214 Knapsack dp (转化背包)

    就是一个背包裸题,由于物品的重量太大,开不了这么大的数组 所以转化一下,由于价值总和不大于5000,所以把价值看作重量,重量看作价值,那么就是同样的价值下,求一个最轻的重量 #include<c ...