cocos2dx 创建动画的几种方式

——————— 1. 使用大图创建帧动画

    // 首先将大图添加到缓存

SpriteFrameCache::getInstance()->addSpriteFramesWithFile(大图名.plist);

// 保存动画的数组
Vector{SpriteFrame*> sf2; (是一对尖括号)

// 执行动作的节点
cocos2d::Sprite* m_sprite = Sprite::create();
addChild(m_sprite);

// 通过名字的方式从缓存中查找到图片并创建精灵帧
sf2.pushBack(SpriteFrameCache::getInstance()->getSpriteFrameByName("eff_slide0.png"));
sf2.pushBack(SpriteFrameCache::getInstance()->getSpriteFrameByName("eff_slide1.png"));

// 创建动作
m_slideAnimation = RepeatForever::create(Animate::create(Animation::createWithSpriteFrames(sf2, 0.1f)));

// 动作必须retain下,否则下一帧时会被销毁
m_slideAnimation->retain();

// 让节点执行动作
m_sprite->runAction(m_slideAnimation);

—————– 2. 使用cocosStudio导出的动画
cocos2d::Node* m_node; // 节点
cocostudio::timeline::ActionTimeline* m_action; // 节点上的动作
// 通过导出的文件创建节点和动作, 文件路径与文件名一定要相同
m_node = CSLoader::createNode(“Effect/Effect_baopo.csb”);
m_action = CSLoader::createTimeline(“Effect/Effect_baopo.csb”);
// 让节点run动作,并将节点绑定到节点树上
m_node->runAction(m_action);
addChild(m_node);

        // 接着动作就可以通过play的方法播放动画了。 第一个参数为动画名,第二个为是否循环播放
    m_action->play("baopo", true);

——————3. 使用spine 导出的动画

    // 首先要引入命名空间
    #include {spine/spine-cocos2dx.h> (一对尖括号)
    #include "spine/spine.h"

        // spine 的动画节点
    spine::SkeletonAnimation* m_heroAnimation;
    m_heroAnimation= SkeletonAnimation::createWithFile("文件名.json", "文件名.atlas");
        // spine导出的动作在cocos中contentSize为0,此时我们为其设置锚点没有作用。当我们手动对它设置了大小后,然后再设置锚点,此时锚点才能起作用
    m_heroAnimation->setContentSize(Size(tHeroSize.width, tHeroSize.height));
    m_heroAnimation->setAnchorPoint(Point(0.5, 0));
    addChild(m_heroAnimation);

    // 接着就可以通过setAnimation来播放动画了  (第一个参数为从整个动画的第几帧开始播到最后一帧,第二个参数为动画名,第三个参数为是否循环播放)
m_heroAnimation->setAnimation(0, animationName, loop);

你可能感兴趣的:(cocos-x笔记)