coco2d-x快速学习—举例(UIRichText.h + UIRichText.cpp)

今天想了解下coco2d中的富文本实现,了解到


这里的UIRichText是实现富文本的类。所以想看下实现内容,如果直接去读代码的话有点乱。

现在打开cocos2d的API文档:

http://www.cocos2d-x.org/docs/api-ref/cplusplus/V2.2.6/d6/d3c/_u_i_rich_text_8h.html

找到UIRichText.h,如下图:

文档中已经把UIRichText里的内容都给归类列好了,有哪些类,有哪些枚举,命名空间这些信息一目了然。

下面在来看.h文件,发现里面有一对

NS_CC_BEGIN

NS_CC_END

首先他们是一对宏定义,用来告诉编译器其中定义的内容是coco2d命名空间下的,因为coco2d的所有核心代码都在cocos2d命名空间下。

另外NS_CC_BEGIN和NS_CC_END中间又包了一层:

namespace ui {

}

这也是一个命名空间的定义,代表UIRichText的命名空间在cocos2d里的ui里,这点跟上图中保持一致。


下面再来看:

#ifndef __UIRICHTEXT_H__

#define __UIRICHTEXT_H__

...(程序段内容)

#endif /* defined(__UIRichText__) */

他们是三种预处理功能(宏定义、文件包含、条件编译)中的条件编译。

ifndef是if not define的缩写,判断__UIRICHTEXT_H__是否被宏定义过,如果没有#define __UIRICHTEXT_H__定义并编译__UIRICHTEXT_H__

endif下面执行如果定义过了执行的程序段,这里没有,所以下面就没有内容了。


#ifndef 的最主要目的是防止头文件的重复包含和编译。


CC_EX_DLL  理解不了啊???????????????????

下面记录下理解的语句:

if(((pos=str.find("<rayimg>"))!=str.npos))  -- str中存在"<rayimg>"这个字符,且位置在pos所代表的位置。

string 类提供了 6 种查找函数,每种函数以不同形式的 find 命名。 这些操作全都返回 string::size_type 类型的值,以下标形式标记查找匹配所发生的位置; 或者返回一个名为 string::npos 的特殊值,说明查找没有匹配。string 类将 npos 定义为保证大于任何有效下标的值。 所以 当 str.find("哦")==string::npos时则说明字符串str中不存在“哦”这个字符, 反之,str.find("哦")!=string::npos则说明字符串str中存在“哦”这个字符


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值