cocos2d-x 2.x创建帧序列动画

本文介绍在Cocos2d-x中实现动画的具体步骤,包括手动添加精灵帧及使用缓存池加载图片帧的方式。文章详细展示了如何通过Animation类和Animate类创建并播放动画,同时介绍了关键接口的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手动添加

手动添加的方法需要将每一帧要显示的精灵有序添加到Animation类中,并设置每帧的播放时间,让动画能够匀速播放。另外,还要通过setRestoreOriginalFrame来设置是否在动画播放结束后恢复到第一帧。创建好Animation实例后,需要创建一个Animate实例来播放序列帧动画。

    CCAnimation *animation = CCAnimation::create();
    for (int i = 1; i <= 4; i++)
    {
        char szName[100] = {0};
        sprintf(szName, "an1_anim%d.png", i);
        animation->addSpriteFrameWithFileName(szName);
    }
    animation->setDelayPerUnit(2.8f/14.0f);
    animation->setRestoreOriginalFrame(true);
    CCAnimate *action = CCAnimate::create(animation);
    CCSprite *sprite = CCSprite::create("an1_anim1.png");
    sprite->setPosition(ccp(100, 100));
    this->addChild(sprite);
    sprite->runAction(action);



在创建Animation实例时会用到以下几个接口:

  • addSpriteFrame,添加精灵帧到Animation实例
  • setDelayUnits,设置每一帧持续时间,以秒为单位
  • setRestoreOriginalFrame,设置是否在动画播放结束后恢复到第一帧
  • clone,克隆一个该Animation实例

    

文件添加


/*加载图片帧到缓存池*/

CCSpriteFrameCache *frameCache = CCSpriteFrameCache::sharedSpriteFrameCache();
//3.x版本获得缓存池方法如下
//SpriteFrameCache *frameCache = SpriteFrameCache::getInstance();
frameCache->addSpriteFramesWithFile("scene1atlasiPhone.plist");

	hero = CCSprite::createWithSpriteFrameName("sv_anim_10.png");
	hero->setPosition(ccp(100, 100));
	this->addChild(hero);
	int iFrameNum = 15;
	CCSpriteFrame *frame = NULL;
	CCArray *frameArray = CCArray::create();
	/*用一个列表保存所有CCSpriteFrame对象*/
	for (int i = 10; i <= 29; i++)
	{
frame = frameCache->spriteFrameByName(CCString::createWithFormat("sv_anim_%d.png", i)->getCString());
		frameArray->addObject(frame);
	}
	/*使用CCSpriteFrame列表创建动画对象*/
	CCAnimation *animation = CCAnimation::createWithSpriteFrames(frameArray);
	animation->setLoops(-1);
	animation->setDelayPerUnit(0.1f);
	CCAnimate *action = CCAnimate::create(animation);	
	hero->runAction(action);

/*从缓存池中获取CCSpriteFrame对象*/






转载于:https://my.oschina.net/BingzhaoChen/blog/470263

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值