cocos2d-x的简单绘制
绘制一个字符串
一般使用CCLabelTTF
四步骤:
//1.初始化 参数1:字体内容 参数2:字体格式 参数3:字体大小
CCLabelTTF* pLabel=CCLabelTTF:create("Hello Cocos2d-x","Arial",24);
//2.检测CC_BREAK_IF();
CC_BREAK_IF(!pLabel);
//3.设置坐标点
CCSize size=CCDirector::sharedDirector()->getWinSize();
pLabel->setPosition(ccp(size.width/2,size.height-50));
//4.加入当前图层
this->addChild(pLabel,1);
绘制一张图片
一般使用CCSprite
四步骤:
//1.初始化
CCSprite* pSprite=CCSprite::create("HelloWorld.png");
//2.检测CC_BREAK_IF();
CC_BREAK_IF(!pSprite);
//3.设置坐标点
CCSize size=CCDirector::sharedDirector()->getWinSize();
pSprite->setPosition(ccp(size.width/2,size.height/2));
//4.加入当前图层
this->addChild(pSprite,1);
创建按钮
CCMenu添加CCMenultem的子类(Menu可以统一管理,方便设置布局);
文本按钮 2种方式
1.CClabelTTF+CCMenultmeLabel 2.CCMenultemFont
图片按钮
CCMenultemlmage
CCLabelTTF+CCMenultmeLabel
//使用CCLabeTTF和CCMenultemLabel创建一个文本按钮
CCLabelTTF* pBtn=CCLabelTTF::create("LabelButton","Arial",20);
//检测
CC_BREAK_IF(!pLabel);
//设置坐标点
//通过pBtn生成一个CCMenultemLabel
CCMenultemLabel* pltemLabel=CCMenultemLabel::create(pBtn);
CC_BREAK_IF(!pltemLabel);
pltemLabel->setPosition(ccp(100,100));
//添加到Menu层
CCMenu* pMenu=CCMenu::create(plitemLable,null);
CC_BREAK_IF(!pMenu);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu,1);
CCMenuItemFont文字按钮
//使用CCMenuItemFont创建一个文本按钮
//第一个参数是字符串 第二个参数 图层,this代表当前图层,第三个参数是一个menu也是一个监听事件
CCMenuItemFont* pltemFont=CCMenuItemFont::create("FontButton",this,NULL);
//检测
CC_BREAK_IF(!pItemFont);
//设置坐标
pItemFont->setPosition(300,300);
//添加到Menu层
CCMenu *pMenu=CCMenu::create(pItemFont,null);
CC_BREAK_IF(!pMenu);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu,1);
CCMenuItemImage图片按钮
//使用图片生成一个按钮 第一个参数按钮未被点击时的图片 第二个参数按钮被点击的图片 第三个参数添加的图层 第四个参数被点击后的响应事件
CCMenuItemImage* pItemImage=CCMenuItemImage::create("CloseNormal.png","CloseSelected.png",this,NULL);
//检测
CC_BREAK_IF(!pItemImage);
//设置坐标
pItemImage->setPosition(300,200);
//添加到Menu层
CCMenu* pMenu=CCMenu::create(pItemFont,null);
CC_BREAK_IF(!pMenu);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu,1);
如何生成一个动画
图片放入项目
1.生成纹理
CCTexture2D* texture2d=CCTextureCache::sharedTextureCache()->addImage("图片路径");
2.截取每帧
CCSpriteFrame* frame=CCSpriteFrame::creat(t,CCRectMake(起点x,起点y,结束x,结束y));
3.所有帧放入
CCArray* array=CCArray::creat(总帧数);
4.生成动画CCAnimation
5.初始化CCSprite并添加到图层
6.使用CCAnimation生成一个CCAnimate(CCAnimation是动画 CCAnimate是动作);
7.CCSprite绑定CCAnimate
上代码-这里说明一下2.0跟2.1的create有差别所以请注意
2.0的代码如下
//读取2D纹理 CCTexture2D* pTexture=CCTextureCache::sharedTextureCache()->addImage("gril.png");
//创建第一帧
CCSpriteFrame* frame0=CCSpriteFrame::create(pTexture,CCRectMake(32*0,48*0,32,48);
//创建第二帧
CCSpriteFrame* frame1=CCSpriteFrame::create(pTexture,CCRectMake(32*1,48*0,32,48);
//创建第三帧
CCSpriteFrame* frame2=CCSpriteFrame::create(pTexture,CCRectMake(32*2,48*0,32,48);
//创建第四帧
CCSpriteFrame* frame3=CCSpriteFrame::create(pTexture,CCRectMake(32*3,48*0,32,48);
CCArray* pArray=CCArray::create(4);
pArray->addObject(frame0);
pArray->addObject(frame1);
pArray->addObject(frame2);
pArray->addObject(frame3);
//创建动画
CCAnimation* animation=CCAnimation::create(pArray,0.5f);
CC_BREAK_IF(!animation);
//初始化并设置一个Sprite
CCSprite* girlSprite=CCSprite::create(frame0);
CC_BREAK_IF(!girlSprite);
//设置坐标点
girlSprite->setPosition(ccp(size.width/2,size.height/2+100));
this->addChild(girlSprite,2);
//使用animation生成animate
CCAnimate* animate=CCAnimate::actionWithAnimation(animation);
CC_BREAK_IF(!animate);
girlSprite->runAction(CCRepeatForever::create(animate));
2.1.1版本
//读取2D纹理
CCTexture2D* pTexture=CCTextureCache::sharedTextureCache()->addImage("smailgirl.png");
//创建第一帧
CCSpriteFrame* frame0=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32*0,48*0,32,48));
//创建第二帧
CCSpriteFrame* frame1=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32*1,48*0,32,48));
//创建第三帧
CCSpriteFrame* frame2=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32*2,48*0,32,48));
//创建第四帧
CCSpriteFrame* frame3=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32*3,48*0,32,48));
CCArray* pArray=CCArray::createWithCapacity(4);
pArray->addObject(frame0);
pArray->addObject(frame1);
pArray->addObject(frame2);
pArray->addObject(frame3);
//创建动画
CCAnimation* animation=CCAnimation::createWithSpriteFrames(pArray,0.5f);
CC_BREAK_IF(!animation);
//初始化并设置一个Sprite
CCSprite* girlSprite=CCSprite::createWithSpriteFrame(frame0);
CC_BREAK_IF(!girlSprite);
//设置坐标点
girlSprite->setPosition(ccp(size.width/2,size.height/2+100));
this->addChild(girlSprite,2);
//使用animation生成animate
CCAnimate* animate=CCAnimate::create(animation);
CC_BREAK_IF(!animate);
girlSprite->runAction(CCRepeatForever::create(animate));
CCTexture2D* pTexture=CCTextureCache::sharedTextureCache()->addImage("smailgirl.png");
//创建第一帧
CCSpriteFrame* frame0=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32*0,48*0,32,48));
//创建第二帧
CCSpriteFrame* frame1=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32*1,48*0,32,48));
//创建第三帧
CCSpriteFrame* frame2=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32*2,48*0,32,48));
//创建第四帧
CCSpriteFrame* frame3=CCSpriteFrame::createWithTexture(pTexture,CCRectMake(32*3,48*0,32,48));
CCArray* pArray=CCArray::createWithCapacity(4);
pArray->addObject(frame0);
pArray->addObject(frame1);
pArray->addObject(frame2);
pArray->addObject(frame3);
//创建动画
CCAnimation* animation=CCAnimation::createWithSpriteFrames(pArray,0.5f);
CC_BREAK_IF(!animation);
//初始化并设置一个Sprite
CCSprite* girlSprite=CCSprite::createWithSpriteFrame(frame0);
CC_BREAK_IF(!girlSprite);
//设置坐标点
girlSprite->setPosition(ccp(size.width/2,size.height/2+100));
this->addChild(girlSprite,2);
//使用animation生成animate
CCAnimate* animate=CCAnimate::create(animation);
CC_BREAK_IF(!animate);
girlSprite->runAction(CCRepeatForever::create(animate));