cocos2dx --- 笔记 容易弄混了四个类,CCSpriteFrame CCAnimationFrame CCAnimation CCAnimate

先来个总结吧。

CCSpriteFrame, 是精灵的单帧信息,内部储存了精灵的Rect和贴图(贴图仅仅是保存了指针)
CCAnimationFrame,是动画的单帧信息,保存了一个SpriteFrame、动画的进度。
CCAnimation,动画信息类,保存完整的动画信息
CCAnimate,动画类,这个类才真正完成,具体的动画播放。它是CCActionInterval的子类。


实现2D精灵的帧动画,遵循以下操作步骤即可。

1、首先将所有的精灵帧读取进来,然后为每一帧创建一个SpriteFrame。

2、然后,创建一个CCAnimation,接着把所有的SpriteFrame按顺序添加进来。

这里如果使用了第一帧初始化,主角精灵的话,为了保证动画播放完成,需要调用一下setRestoreOriginalFrame函数

        这个函数,设置当动画播放完成以后,是否释放第一帧,true为不释放。

3、然后,动画创建完成后,如果动画需要多次播放,可以加入到AnimationCache当中,

形式如下,第一个参数是CCAnimation,第二个是动画名。

CCAnimationCache::sharedAnimationCache()->addAnimation( pAnimation, "man" );

4、最后,在需要创建动画的地方,创建一个CCAnimate,然后把刚才创建好的CCAnimation传进去,再设置一下参数,就大功告成了。

      接下来只需要选择合适的动画,再调用主角精灵的runAction就大功告成了。


示例代码:

	CCTexture2D *pTex = CCTextureCache::sharedTextureCache()->addImage( "man.png" );
	CCSpriteFrame *frame0 = CCSpriteFrame::createWithTexture( pTex, 
		CCRectMake(80*0, 80*0, 80, 80));
	CCSpriteFrame *frame1 = CCSpriteFrame::createWithTexture( pTex, 
		CCRectMake(80*1, 80*0, 80, 80));
	CCSpriteFrame *frame2 = CCSpriteFrame::createWithTexture( pTex, 
		CCRectMake(80*2, 80*0, 80, 80));
	CCSpriteFrame *frame3 = CCSpriteFrame::createWithTexture( pTex, 
		CCRectMake(80*3, 80*0, 80, 80));
	CCSpriteFrame *frame4 = CCSpriteFrame::createWithTexture( pTex, 
		CCRectMake(80*4, 80*0, 80, 80));
	initWithSpriteFrame( frame0 );

	CCAnimation *pAnimation = CCAnimation::create();
	pAnimation->setDelayPerUnit( 0.05f );
	pAnimation->addSpriteFrame( frame0 );
	pAnimation->addSpriteFrame( frame1 );
	pAnimation->addSpriteFrame( frame2 );
	pAnimation->addSpriteFrame( frame3 );
	pAnimation->addSpriteFrame( frame4 );

	CCAnimate *pAnimate = CCAnimate::create( 
		CCAnimationCache::sharedAnimationCache()->animationByName( "man" ) );
	CCActionInterval *pInterval;

	pInterval = CCSequence::create( 
		CCScaleTo::create( 0.1f, 2.0f ),
		pAnimate, CCScaleTo::create( 0.1f, 1.0f ), 
		CCFlipX::create( false ), NULL );
		
	this->runAction( pInterval );






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值