接上部分,我们完成了上面的操作后,就要开始往我们的cpp里写代码啦~~~
bool HelloWorld::init()
{
//
// 1. super init first
if ( !CCLayerColor::initWithColor(ccc4(255,255,255,255)) )//设置背景颜色为白色
{
return false;
}
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("new_0.plist");// 将精灵放入缓冲区
CCArray *walkArray = CCArray::create();//创建一个数组,用于存储动画的每一帧
for (int i=0; i<16; i++)
{
char str[20];
sprintf(str,"hero_%d.png",i); //这里会有详细解释,请看文章
CCSpriteFrame *sprFrame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str);//用名字创建每一帧动画
walkArray->addObject(sprFrame);//把帧加到数组中来
}
// 创建英雄,并把刚才数组第一帧指定为英雄初始样子
CCSprite *hero = CCSprite::createWithSpriteFrame((CCSpriteFrame *)walkArray->objectAtIndex(0));
hero->setPosition(ccp(100, 100));//初始位置
this->addChild(hero);//把英雄放到图层中来
CCAnimation *frameAnimation = CCAnimation::createWithSpriteFrames(walkArray, 0.2f);//用数组内容来创建一个动画帧容器,姑且这么理解先 并指定播放间隔为0.2秒
CCAnimate *frameAnimate = CCAnimate::create(frameAnimation);//用上面的容器来创建一个动画
// 播放动画
hero->runAction(CCRepeatForever::create(frameAnimate));
return true;
}
代码中的解释:
为什么我们加入的名字是hero_%d呢?因为我们之前的那些小图名字就是hero_0.png 、hero_1.png。。。你也许很奇怪,可是我们并没有吧hero_0.png等这些图片放到资源文件夹中啊!
是的!你说的没错!我们应该要理解下plist这文件了。
红孩儿的这个工具,就是把我们的16张小图集合为一张new_0.png了,并且生成了一个plist文件。
其中,plist文件里面,记录了小图的名字,大小,在new_0.png中的位置。说白了plist就是把之前的小图文字信息全部打包一起了,而图片则保留在new_0.png上,这就是为什么我们只需要这两个文件的原因。
好啦大功告成了,去运行下吧!
就是这么简单!有了这个基础你就可以做一些你想做的事啦~~~~
PS.本人是新手,如果有错误还请慷慨指出,谢谢您啦!