小鬼学cocos2dX笔记01——创建精灵动画(二)

接上部分,我们完成了上面的操作后,就要开始往我们的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.本人是新手,如果有错误还请慷慨指出,谢谢您啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值