cocos2d-x重新学习的经历(第一天)---使用animation播放动画

博主在大一时接触过cocos2d-x,现重启学习,分享第一天的经验。主要讲解如何使用CCAnimation和CCAnimate创建帧动画。通过创建精灵并加载动画图片到缓存,利用CCSpriteFrameCache和texturepacker打包的png及plist文件,实现资源优化和动画效果。

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


大一下 学习cocos2d-x 做了点小东西,后来因为一些原因没有继续。


趁着假期,再重学一下,顺便做一些小东西吧。


                                                                              ---Hero.Kingsley


1、使用CCanimation和CCAnimate


作为游戏,肯定会有动画效果。至于动画效果如何产生呢?cocos2d-x引入了帧动画的概念,通过不同图片的切换达到动画的效果。


帧动画就是靠CCAnimation和CCAniamate实现的。


我们首先创建 一个sprite精灵。


sprite = CCSprite::create("1- 128×72/hero1.png");
sprite->setPosition(ccp(100,100));
this->addChild(sprite,2);


然后就是通过把动画图片文件加载进缓存内。


这里有几种方法。我采用了CCSpriteFrameCache。


另外这里要注意的是为了节省资源,可以利用texturepacker将多张png图片打包成大图png以及plist文件。plist文件相当于是一个配置文件,其底层似乎是由xml文件实现的。

plist文件和大图png文件要保持同名,不然系统无法识别。


然后:

      

        CCSpriteFrameCache* cache = CCSpriteFrameCache::sharedSpriteFrameCache();//获取CCSpriteFrameCache的缓存,是一个静态的变量就像CCDirector一样
	
	cache->addSpriteFramesWithFile("hero.plist");//把plist文件添加进去。

注意到plist文件实际上是一个配置文件,所以你可以通过小图的名字索引出他们在大图的具体位置(当然,这个步骤是由cocos2d-x为你实现的。)


      
	for(int i = 1; i <= 16; ++i){
		sprintf(name,"hero%d.png",i);
	
		animation->addSpriteFrame(cache->spriteFrameByName(name));//把文件名传进plist文件内获取小图的spriteFrame,建议使用连续的文件名。
		
		
		CC_BREAK_IF(!cache->spriteFrameByName(name));

		CCLog("%s",name);
	}


这是后我们的缓存里就有我们需要的图片文件了。然后就该CCAnimation上场了。


        CCAnimation* animation = CCAnimation::create();//创建一个CCAnimation
        animation->retain();
	animation->setDelayPerUnit(1.0f / 16.0f);  //设置每帧的时间
	
	CCAnimationCache* sharecache = CCAnimationCache::sharedAnimationCache();
	sharecache->addAnimation(animation,"fish_swimming");
	CCAnimate* animate = CCAnimate::actionWithAnimation(animation);
	animation->retain();
	animate->setDuration(1);//设置整个动画一秒(感觉和前面重复了)。。。


	sprite->runAction(animate);
这样sprite就可以游动了。如果想达到一直游动的想过可以把最后一句改成sprite->runAction(CCRepeatForever::actionWithAction(animate));
这样就可以了。
行文简陋,错误可能百出。希望cocos2d-x高手们狠狠指出错误的地方,也希望新手们能在入门时少走些弯路。
       







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值