zoukankan      html  css  js  c++  java
  • cocos2dx帧动画

        //帧动画的创建
        //方式一,通过多张图片来创建
        auto sprite1 = Sprite::create("grossini_dance_05.png");
        sprite1->setPosition(Vec2(visibleSize.width*0.3, visibleSize.height/2));
        this->addChild(sprite1);
        
        //创建帧动画序列,名词形式
        auto animation = Animation::create();
        for (int i=5; i<11; i++)
        {
            char szName[100] = {0};
            sprintf(szName, "grossini_dance_%02d.png", i);
            animation->addSpriteFrameWithFile(szName);
        }
        //设置帧动画属性
        animation->setDelayPerUnit(2.0f / 6);      //每一帧停留的时间,2秒时间完成6幅图片显示,切记要写成2.0f形式!
        animation->setRestoreOriginalFrame(true);       //播放完后回到第一帧
        
        auto animate = Animate::create(animation);
        sprite1->runAction(RepeatForever::create(animate));
        
        
        //方式二,通过一张集合的图片来创建
        //创建2D纹理
        auto texture = Director::getInstance()->getTextureCache()->addImage("dragon_animation.png");
        //建立图片帧
        auto frame0 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*0, 132, 132));
        auto frame1 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*0, 132, 132));
        auto frame2 = SpriteFrame::createWithTexture(texture, Rect(132*2, 132*0, 132, 132));
        auto frame3 = SpriteFrame::createWithTexture(texture, Rect(132*3, 132*0, 132, 132));
        auto frame4 = SpriteFrame::createWithTexture(texture, Rect(132*0, 132*1, 132, 132));
        auto frame5 = SpriteFrame::createWithTexture(texture, Rect(132*1, 132*1, 132, 132));
        
        auto sprite2 = Sprite::createWithSpriteFrame(frame0);
        sprite2->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
        this->addChild(sprite2);
        
        //保存图片帧
        //Vector<cocos2d::AnimationFrame *> array;
        Vector<cocos2d::SpriteFrame *> array;
        array.pushBack(frame0);
        array.pushBack(frame1);
        array.pushBack(frame2);
        array.pushBack(frame3);
        array.pushBack(frame4);
        array.pushBack(frame5);
        
        auto animation2 = Animation::createWithSpriteFrames(array, 0.2f);   //此处createWithSpriteFrames()函数确实每帧间隔时间参数,需自行加上去!!!
        sprite2->runAction(RepeatForever::create(Animate::create(animation2)));
        
        
        //方式三,通过.plist 文件来创建
        auto cache = SpriteFrameCache::getInstance();
        cache->addSpriteFramesWithFile("animate.plist");
        
        auto sprite3 = Sprite::createWithSpriteFrameName("grossini_dance_05.png");
        sprite3->setPosition(Vec2(visibleSize.width*0.7, visibleSize.height/2));
        this->addChild(sprite3);
        
        Vector<cocos2d::SpriteFrame *> arr;
        char str[100] = {0};
        for (int i=1; i<15; i++)
        {
            sprintf(str, "grossini_dance_%02d.png", i);
            auto frame_2 = cache->SpriteFrameCache::getInstance()->getSpriteFrameByName(str);   //3.2版本有改变
            arr.pushBack(frame_2);
        }
        
        auto animation3 = Animation::createWithSpriteFrames(arr, 0.2f);     //此处也不要忘记加上时间间隔参数
        sprite3->runAction(RepeatForever::create(Animate::create(animation3)));
        
        return true;
    

      

  • 相关阅读:
    C# 获取文件名及扩展名
    Javscript调用iframe框架页面中函数的方法
    jquery事件重复绑定的几种解决方法 (二)
    Jquery 点击事件重复获取叠加 (一)
    .NET 即时通信,WebSocket服务端实例
    .Net ASP.NET 打开指定文件夹
    动态 hover 使用变相使用
    给 layui upload 带每个文件的进度条, .net 后台代码
    layui upload 后台获取不到值
    ECharts配置项之title(标题)
  • 原文地址:https://www.cnblogs.com/kefeiGame/p/7360347.html
Copyright © 2011-2022 走看看