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;
    

      

  • 相关阅读:
    jQuery取得select选择的文本与值
    jquery 广告效果
    【JNI知识一】JNI接口函数与指针
    jQuery 中bind(),live(),delegate(),on() 区别(转)
    用angular怎么缓存父页面数据
    js条件判断时隐式类型转换
    常用原生JS方法
    gulp批量打包文件并提取公共文件
    angular下H5上传图片(可预览,可多张上传)
    angular4运行 ng build prod出错
  • 原文地址:https://www.cnblogs.com/kefeiGame/p/7360347.html
Copyright © 2011-2022 走看看