转自:http://blog.sina.com.cn/s/blog_61d2d3f50100zgz8.html

一.   CC_ASSERT 或 CCAssert宏

Assert - 断言

  使用断言可以创建更稳定,品质更好且不易于出错的代码。当需要在一个值为FALSE时中断当前操作的话,可以使用断言。单元测试必须使用断言。
  除了类型检查和单元测试外,断言还提供了一种确定各种特性是否在程序中得到维护的极好的方法。

通过使用CC_ASSERT或者CCAssert,我们可以检测代码是否有多用、用错等情况,比如:

// [Test] 每生成一个对象,计数器+1 【判断对象是否不小心创建了多个。】
CCAssert( ++t_gameLayer_GameLayer_Count == , "GameLayer对象生成超过个!" ); // 校验输入的index是否是否超过默认穴位组的大小【5-8个】。【判断输入的index是否超出范围】
CC_ASSERT("参数id超出默认穴位组大小!" && index< MAX_HITPOINT_SIZE && index>=);

程序运行时突然报错,然后弹出窗口提示“GameLayer对象生成超过个!”,这样我们就知道GameLayer这个对象多创建了,然后就根据vs2008“调用堆栈”窗口,看看代码的执行顺序,就可以知道代码是哪里写错了,进而改正,让代码更加健壮。

两个宏的用法差不多,看看源代码就懂了,实际上它们就是同一个东西啦。

#ifndef CCAssert
#define CCAssert(cond, msg) CC_ASSERT( msg && cond)
#endif // CCAssert #ifdef _DEBUG
#define CC_ASSERT(cond) (void)( (!!(cond)) || (badaAssert(__PRETTY_FUNCTION__ , __LINE__ , #cond),0) )
#else
#define CC_ASSERT(cond) void(0)
#endif
#endif

二.CCNS.h

最近在看cocos2d-x的源代码,发现CCNS.h这个类有几个函数挺实用的,简单翻译一下。

/ *
@描述: 根据给定的字符串格式,返回一个CCRect对象。
@参数:
pszContent:一个格式为:"{{x,y},{w, h}}"的字符串。 x:x轴;y:y轴;w:宽;h:高。
取值可以是int或者float型。
例子:"{{3,2},{4,5}}"。
@返回:如果参数的格式不正确,则返回CCRectZero。
* /
CCRect CC_DLL CCRectFromString(const char* pszContent);
/ *
@描述:根据给定的字符串格式,返回一个CCpoint对象。
@参数:
pszContent: 一个格式为:"{x,y}"的字符串。x:x轴;y:y轴。
取值可以是int或者float型。
例子:"{3.0,2.5}"。
@返回:如果参数的格式不正确,则返回CCPointZero。
* /
CCPoint CC_DLL CCPointFromString(const char* pszContent);
/ *
@描述:根据给定的字符串格式,返回一个CCSize对象。
@参数:
pszContent:一个格式为:"{w,h}"的字符串。w:宽度;h:高度。
取值可以是int或者float型。
例子:"{3.0,2.5}"。
@返回:如果参数的格式不正确,则返回CCSizeZero。
* /
CCSize CC_DLL CCSizeFromString(const char* pszContent);

用法:

CCPoint tPosition = CCPointFromString("{0,12}");

如果CCRect、CCPoint或CCSize是通过外部文件(xml,ini)加载的话,这几个函数就很实用了。

cocos2d-x编程的一些小技巧的更多相关文章

  1. 25条div+CSS编程提醒及小技巧整理

    1.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值. 2.同一个的class选择符可以在一个文档中重复出现,而id选择符却只能出现一次:对一个标签同时使用clas ...

  2. 关于php编程的一些小技巧

    1. NULL,0和空的区分判断 (1)0与空的区分 <?php  $a = 0;if($a==''){ echo '此判断条件不能区分';}else{ echo '此判断条件可以区分';} ? ...

  3. Shellcode编程小技巧

    工作需要,需要注入其他程序监控一些东西,检测到的数据通过WM_COPY 消息发送给显示窗体.(大体是这样的还没定稿) ##1 选择一个框架 ## tombkeeper/Shellcode_Templa ...

  4. 使用IntelliJ IDEA的小技巧快乐编程(1)

    前言 我很喜欢和别人讨论一些问题,有时候,在公司里,讨论这样的问题需要演示代码.常常会碰到的一种情况是(根据我的记忆这半年多来至少超过了10次),别人会打断你的演示,抛出一个问题:等等,你刚才的操作是 ...

  5. Java编程小技巧(1)——方法传回两个对象

    原文地址:Java编程小技巧(1)--方法传回两个对象 | Stars-One的杂货小窝 题目是个伪命题,由Java语法我们都知道,方法要么返回一个对象,要么就不返回 当有这样的情况,我们需要返回两个 ...

  6. 学会这些 pycharm 编程小技巧,编程效率提升 10 倍

    PyCharm 是一款非常强大的编写 python 代码的工具.掌握一些小技巧能成倍的提升写代码的效率,本篇介绍几个经常使用的小技巧. 一.分屏展示 当你想同时看到多个文件的时候: 1.右击标签页: ...

  7. iOS:小技巧(不断更新)

    记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...

  8. 一些Python的惯用法和小技巧:Pythonic

    Pythonic其实是个模糊的含义,没有确定的解释.网上也没有过多关于Pythonic的说明,我个人的理解是更加Python,更符合Python的行为习惯.本文主要是说明一些Python的惯用法和小技 ...

  9. ( 译、持续更新 ) JavaScript 上分小技巧(一)

    感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...

随机推荐

  1. 对于 APM 用户的一次真实调查分析(下)

    一.前言 对 APM 用户的一次真实调查分析(上)中,我们主要聊到了现阶段国外 APM 行业对各个企业的渗透率.大部分使用 APM 工具的企业规模以及 APM 工具在用户心中的地位等问题,有兴趣的朋友 ...

  2. Codeforces Round #230 (Div. 2) C Blocked Points

    题目链接 题意 : 给你一个半径为n的圆,圆里边还有圆上都有很多整点,让你找出与圆外的任意一个整点距离等于1的点. 思路 :这个题可以用枚举,画个图就发现了,比如说先数第一象限的,往下往右找,还可以找 ...

  3. [jobdu]不用加减乘除做加法

    使用异或和与,模拟机器的加法.http://blog.csdn.net/htyurencaotang/article/details/11125415 #include <iostream> ...

  4. VC 对话框背景颜色、控件颜色(三种方法)

    系统环境:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为对话框设置背景颜色.控件颜色 既然MFC对话框不好开发,那么现在我们来开始美化我们的对话框.为对话框设置背景颜色 ...

  5. Vue.js 基础示例

    为 Vue.js 初学者写了一些简单的示例,在线示例 示例源码 了解更多请查看 Vue.js 官网文档:http://vuejs.org.cn/guide/

  6. ODBC具体使用

    应用程序 应用程序对外提供使用者交谈界面,同时对内执行资料之准备工作数据库系统所传回来的结果在显示给使用者看.简单来说,应用程序即ODBC 界面执行下列主要工作:1. Request a connec ...

  7. 【原创】MIPS浅议之——中断系统之我见

    最近,准确的说应该是最近两个月的时间,我都在研究MIPS的异常与中断.或者可以说,最近这两个月,我才真正了解中断系统的整个结构和处理流程以及为什么要这样做?这段时间我最大的体会就是以前我们在“计算机组 ...

  8. CentOS5.5 下编译安装 LAMP

    大纲 1.安装gcc编译器 2.卸载rpm安装的http和mysql软件 3.编译安装php依赖包 4.安装apache软件 5.安装mysql软件 6.安装php软件 7.安装memcache ph ...

  9. bzoj1056

    花了一上午大概复习了一下splay,treap 像这种裸的数据结构题在js应该会越来越少 不过练练手也好, 这就是平衡树+hash,如果这是单纯的BST应用,还是写treap吧,好调试 ;       ...

  10. 对XX证券报关于物联网操作系统的几个问题的答复

    XX证券报提问了几个关于物联网和物联网操作系统的问题,个人表达了一些粗陋的观点,在这里发表出来,与行业朋友交流和探讨. 物联网行业最需要解决的问题是什么? 虽然物联网这个行业被炒得比较热,但是截至目前 ...