首页 > 代码库 > cocos2dx 3.x(实现帧动画(人物动画,跑马灯效果)的几种方法)

cocos2dx 3.x(实现帧动画(人物动画,跑马灯效果)的几种方法)

 1 //创建一个跑酷的精灵?
 2  auto sprite = Sprite::create("1.png");?
 3  //设置精灵的坐标?
 4  sprite->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));?
 5 //添加到当前层?
 6  this->addChild(sprite);?
 7 //创建序列帧动画?
 8  auto animation = Animation::create();?
 9 //设置动画名字数组的长度?
10 char nameSize[20] = {0};?
11  //动画的循环 12张图片?
12  for (int i =1; i<13; i++)?
13  {?
14        //循环遍历?
15         sprintf(nameSize, "%d.png",i);?
16          //添加到序列帧动画?
17      animation->addSpriteFrameWithFile(nameSize);?
18  }?
19 //设置动画帧的时间间隔?
20 animation->setDelayPerUnit(0.02f);?
21 //设置播放循环 一直播放 为-1?
22 animation->setLoops(-1);?
23 //设置动画结束后恢复到第一帧?
24 animation->setRestoreOriginalFrame(true);?
25  //创建动画动作?
26 auto animate = Animate::create(animation);?
27  //播放动画?
28 sprite->runAction(animate);

 

 

 1 //帧动画缓存?
 2 auto frameCache = SpriteFrameCache::getInstance();?
 3  frameCache02->addSpriteFramesWithFile("1.plist");?
 4  //创建一个显示动画的精灵?
 5 auto sprite = Sprite::createWithSpriteFrameName("1.png");?
 6 //设置动画的坐标?
 7 sprite->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));?
 8 //添加到当前层?
 9 this->addChild(sprite);?
10 //?创建一个容器
11  Vector<SpriteFrame*> vec;?
12  //设置动画名字数组的长度?
13 char name[20] = {0};?
14  for (int i = 1; i<13; i++) {?
15 //遍历?
16 sprintf(name, "%d.png",i);?
17 vec.pushBack(frameCache->getSpriteFrameByName(name));?
18  }?
19  //auto animation = Animation::createWithSpriteFrames(vec,0.05f);?
20  //也是可以这么写的。那setDelayPerUnit 这个需要注释掉?
21 auto animation = Animation::createWithSpriteFrames(vec);?
22 //设置动画帧的时间间隔?
23 animation->setDelayPerUnit(0.05f);?
24  //设置播放循环 一直播放 为-1?
25  animation->setLoops(-1);?
26 //设置动画结束后恢复到第一帧?
27 animation->setRestoreOriginalFrame(true);?
28  //创建动画动作?
29  auto animate = Animate::create(animation);?
30  //播放动画动作?
31 sprite->runAction(animate);

 

cocos2dx 3.x(实现帧动画(人物动画,跑马灯效果)的几种方法)