cocos2d-x系列笔记(4)---会动的小精灵

这一篇我们准备在第3篇中创建的场景中增加一个带有动画效果的精灵.

创建精灵我们本着以下思路来写代码,首先要创建一个纹理对象CCTexture,这个纹理对象中包含了精灵动画的每一帧图片.

创建一个CCSpriteFrame(精灵帧)的数组将从纹理上切割下来的每帧图象保存到数组中.

使用CCSpriteFrame数组创建一个CCAnimation对象.利用CCAnimation对象创建一个CCAnimate对象.

这里我对CCAnimation和CCAnimate的理解是CCAnimation表示一个动画是一个名词,它单纯的就是指这段动画.而CCAnimate是一个动作,精灵会去执行这个动作.

最后精灵可以使用runAction函数执行动画,下面我们来看看代码

//创建一个带动画的精灵
void Scene1::createAnimateSprite()
{
	CCSize size = CCDirector::sharedDirector()->getWinSize();

	//1.创建一个纹理对象
	CCTexture2D *texture = CCTextureCache::sharedTextureCache()->addImage("Kaito.png");
	//2.创建一个数组对象用来保存精灵的每一帧
	CCArray *animateFrames = new CCArray(4);
	//3.从纹理上切割每一帧所需要的图片
	for(int i=0;i<4;i++)
	{
		CCSpriteFrame *frame = CCSpriteFrame::frameWithTexture(texture,CCRectMake(32*i,48*0,32,48));
		animateFrames->addObject(frame);
	}
	//4.创建CCAnimation对象
	CCAnimation *ani = CCAnimation::animationWithSpriteFrames(animateFrames,0.2f);
	//5.创建Sprite对象
	CCSpriteFrame *frame1 = (CCSpriteFrame*)animateFrames->objectAtIndex(0);
	CCSprite *sprite = CCSprite::spriteWithSpriteFrame(frame1);
	sprite->setPosition(ccp(size.width/2,size.height-50));
	this->addChild(sprite,2);

	//6.设置精灵运行动画
	CCAnimate *animate = CCAnimate::actionWithAnimation(ani);
	sprite->runAction(CCRepeatForever::actionWithAction(animate));
}


实际应用时,大家可以根据人物不同的动作创建不同的CCAnimate对象.当人物执行向左,向右,跳跃等动作时,播放不同的动画.

在这段代码中,我们使用了CCArray作为容器,很多看过其他cocos2dx教程的朋友可能会问,为什么不用CCMutableArray类呢?因为cocos2d-x升级到2.0后,已全面用CCArray代替了CCMutableArray类,大家在写代码时一定要注意这一点.

看看我们实现的效果吧

cocos2d-x系列笔记(4)---会动的小精灵_第1张图片

 

你可能感兴趣的:(cocos2d-x系列笔记(4)---会动的小精灵)