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

    xiaoxiao2021-11-24  63

    今天想了解下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中存在“哦”这个字符

    转载请注明原文地址: https://ju.6miu.com/read-678485.html

    最新回复(0)