(3)Cocos2d-x:常用类的创建方法

前提假设有个CCLayer*为layer  (如果是在HelloWorldScene.cpp 的 init函数里直接用this就可以了,因为它本身就是一个CCLayer即使它名字带有Scene,但它不是CCScene,它是通过静态方法scene()函数创建了一个临时的CCScene以及自身的一个实例,然后将该实例添加到该Scene中返回的)
 
ps:随着cocos2d-x的版本的改变有些接口名称会和以往的版本有所不同,但是用法都是差不多的,或者说基本都一样。
 
要查看每个类的其余成员变量或者成员方法,都可以跳转到每个类的头文件里去查看,同时还有很多相关的注释。
 
比如从CCSprite.h这个头文件里,你就可以发现CCSprite还有如下这么方法可以使用,多数可以从方法名里看出方法的作用。
        virtual void removeChild(CCNode* pChild, bool bCleanup);
        virtual void removeAllChildrenWithCleanup(bool bCleanup);
        virtual void reorderChild(CCNode *pChild, int zOrder);
        virtual void addChild(CCNode *pChild);
        virtual void addChild(CCNode *pChild, int zOrder);
        virtual void addChild(CCNode *pChild, int zOrder, int tag);
        virtual void sortAllChildren();

        virtual void setDirtyRecursively(bool bValue);
        virtual void setPosition(const CCPoint& pos);
        virtual void setRotation(float fRotation);
        virtual void setSkewX(float sx);
        virtual void setSkewY(float sy);
        virtual void setScaleX(float fScaleX);
        virtual void setScaleY(float fScaleY);
        virtual void setScale(float fScale);
        virtual void setVertexZ(float fVertexZ);
        virtual void setAnchorPoint(const CCPoint& anchor);
        virtual void ignoreAnchorPointForPosition(bool value);
        virtual void setVisible(bool bVisible);
        void setFlipX(bool bFlipX);
        void setFlipY(bool bFlipY);
http://www.cocos2d-x.org/reference/native-cpp/index.html 这是官网的在线文档
 
 
CCSprite:这个类主要用来显示图片,以及做一些动画
  CCSprite* pSprite = CCSprite::create("CloseNormal.png");    
  pSprite->setPosition(ccp(50, 50));
  pSprite->setScale(0.5); 
  layer->addChild(pSprite, 0);
 
CCLabelTTF: 用于显示文字信息的,也是可以做一些动画
  CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24); 
  pLabel->setPosition(ccp(50, 50));
  layer>addChild(pLabel, 1);
还有一种常见创建方法为
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World","Arial",24,CCSizeMake(100,100),kCCTextAlignmentCenter);
这个与上面的却别在于其限定了label的尺寸,此处设置长宽为100,同时显示的文本是居中的kCCTextAlignmentCenter,左对齐就是kCCTextAlignmentLeft,右对齐就是kCCTextAlignmentRight。
 
PS:如何知道有这3种对齐方式,或者有这两种创建方式?
    就是直接到CCLabelTTF里的头文件里查看,研究下每个成员函数,然后对每个函数的作用都可以猜出个大概。从头文件可以看出CCLabelTTF有3个create函数,除上面一个外,还有一个create函数比第二种创建方法多了一个CCVerticalTextAlignment参数,从字面上理解应该是垂直方向上的文本对齐,之前我用的cocos2d-x都还没有这个参数,真是日新月异啊。至于这个参数要传什么东西进去,可以右击CCVerticalTextAlignment这个单词,然后点击跳转到定义就可以看到其大概有3个参数可供选择,从字面意思也可以了解这3个参数分别代表什么。Top Center Bottom 都很明显了,也可以发现CCVerticalTextAlignment是个枚举型。
typedef enum
{
        kCCVerticalTextAlignmentTop,
        kCCVerticalTextAlignmentCenter,
        kCCVerticalTextAlignmentBottom,
} CCVerticalTextAlignment;
 
按钮的创建:
    按钮的创建相比之前两个类会比较麻烦一点。
    先看代码,look down
 
        CCMenu* pMenu = CCMenu::create();
        pMenu->setPosition(CCPointZero); 
        layer->addChild(pMenu, 1); 

      CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png", 
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback)
);
      pCloseItem->setPosition(ccp(50, 50));
      pMenu->addChild(pCloseItem);
      首先它创建了一个CCMenu对象,把这个对象加到layer层中,然后再创建一个CCMenuItemImage对象,把它加到CCMenu对象中,到CCMenu的定义中可以看出CCMenu其实是继承CCLayer的,其实它也是个Layer。
     大体是这样的一个CCMenu可以装下很多个MenuItem,为什么是MenuItem而不是CCMenuItemImage,那是因为MenuItem也有好几个品种比如还有CCMenuItemLabel,这些都是可以加如到CCMenu当中去的。从字面上理解,一个应该是跟图片相关,一个应该是跟标签相关的。可以去做下测试。
 
 ENDING:
       这几个类是比较基础的,当然还有CCLayer,CCScene,先不提啦。
       学习途径就是先去头文件里看看有哪些创建方法,或者成员方法,也可以直接把类名复制一下,直接到google或者百度上面搜索,我相信会有很多文章介绍的。

本文出自 “Never Stop Sharing” 博客,请务必保留此出处http://loma1990.blog.51cto.com/6082839/1007070

你可能感兴趣的:(cocos2d-x,CCLabelTTF,CCSprite)