cocos2d-x for xna 学习笔记01:基本动画实现

时间:2023-02-06 18:58:58

基于cocos2d-x的动画都是采用了Action的方式来实现,这样做的导致了实现一个简单的动画就要写比较多的代码。在实际项目和开发中,可能需要我们自己去封装。

下面介绍一下,怎么在cocos2d-x for xna 中实现一个基本的动画。我准备一张动画源图,如下:

cocos2d-x for xna 学习笔记01:基本动画实现

新建一个helloworld项目后,把图片加入到项目资源中。

在init()函数加入以下代码

            #region 简单动画测试
CCTexture2D texture = CCTextureCache.sharedTextureCache().addImage(@"Animation\AndyBogard_by_SWP");
CCSpriteFrame fame0 = CCSpriteFrame.frameWithTexture(texture, new CCRect(32 * 0, 48 * 0, 32, 48));
CCSpriteFrame fame1 = CCSpriteFrame.frameWithTexture(texture, new CCRect(32 * 1, 48 * 0, 32, 48));
CCSpriteFrame fame2 = CCSpriteFrame.frameWithTexture(texture, new CCRect(32 * 2, 48 * 0, 32, 48));
CCSpriteFrame fame3 = CCSpriteFrame.frameWithTexture(texture, new CCRect(32 * 3, 48 * 0, 32, 48));

List<CCSpriteFrame> list = new List<CCSpriteFrame>();
list.Add(fame0);
list.Add(fame1);
list.Add(fame2);
list.Add(fame3);

CCAnimation animation = CCAnimation.animationWithFrames(list);

CCSprite sprite = CCSprite.spriteWithSpriteFrame(fame0);
sprite.position = new CCPoint(200, 200);
addChild(sprite);

CCAnimate animate = CCAnimate.actionWithAnimation(animation);
animate.duration = 0.5f;
sprite.runAction(CCRepeatForever.actionWithAction(animate));

#endregion

编辑运行就可以见到效果了。

简单过程是,使用CCTexture2D加载图片 ,用CCTexture2D生成对应的CCSpriteFrame(对应的就是帧),将CCSpriteFrame添加到CCAnimation生成动画数据,用CCAnimation生成CCAnimate(就是最终的动画动作),最后用CCSprite执行这个动作。