前提假设有个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