cocos3 动作和帧动画

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }

    Size visibleSize = Director::getInstance()->getVisibleSize();

    auto label = LabelTTF::create("jikexueyuan", "Courier", 30);
    label->setPosition(visibleSize.width/2, visibleSize.height/2);
    addChild(label);

    auto listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = [label](Touch *t,Event *e){

        if (label->getBoundingBox().containsPoint(t->getLocation())) {

//            label->runAction(MoveTo::create(1, Point(100, 100)));
//            label->runAction(MoveBy::create(1, Point(-50, -50))->reverse());

//            label->runAction(Spawn::create(MoveBy::create(1, Point(100, 100)), RotateBy::create(1, 360),NULL));

//            label->runAction(Sequence::create(MoveBy::create(1, Point(100, 100)),RotateBy::create(1, 360), NULL));

            label->runAction(Sequence::create(
                                              MoveBy::create(1, Point(100, 100)),
                                              RotateBy::create(1, 360),
                                              CallFunc::create([](){
                MessageBox("Action complete", "complete");
            }),NULL));
        }

        return false;
    };
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, label);

//    label->runAction(Repeat::create(RotateBy::create(1, 180), 3));
//    label->runAction(RepeatForever::create(RotateBy::create(1, 180)));

    auto cache = SpriteFrameCache::getInstance();
    cache->addSpriteFramesWithFile("anim.plist");

    Vector<SpriteFrame*> vec;
    char name[20];
    memset(name, 0, 20);
    for (int i=0; i<20; i++) {
        sprintf(name, "anim%04d",i);
        vec.pushBack(cache->getSpriteFrameByName(name));
    }

    Animate * a = Animate::create(Animation::createWithSpriteFrames(vec,0.1f));
    auto sprite = Sprite::create();
    sprite->setPosition(200, 200);
    addChild(sprite);

    sprite->runAction(RepeatForever::create(a));

    return true;
}
时间: 2024-08-04 19:45:31

cocos3 动作和帧动画的相关文章

cocos3.0使用cocostudio动画帧结合地图对象键值创建精灵动画

内容如下: #include "cocos2d.h" #include "cocostudio/CocoStudio.h" //精灵猫和其他精灵的tag typedef enum{ catTag =1, }; //cocostudio 动画帧tag typedef enum{ catWalkTag = 1001, }; class Base :public cocos2d::Layer { public: Base(); ~Base(); //在地图中创建一个活多个

window.requestAnimationFrame() ,做逐帧动画,你值得拥有

window.requestAnimationFrame() 方法告诉浏览器您希望执行动画,并请求浏览器调用指定的函数在下一次重绘之前更新动画.该方法使用一个回调函数作为参数,这个回调函数会在浏览器重绘之前调用. 如果你想做逐帧动画的时候,你应该用这个方法.这就要求你的动画函数执行会先于浏览器重绘动作.通常来说,被调用的频率是每秒60次,但是一般会遵循W3C标准规定的频率.如果是后台标签页面,重绘频率则会大大降低. 基本语法: requestID = window.requestAnimatio

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 /

css3 实现逐帧动画

实现逐帧动画需要使用到的是Animation动画,该CSS3的Animation有八个属性:分别是如下:1: animation-name2: animation-duration3: animation-delay4: animation-iteration-count5: animation-direction6: animation-play-state7: animation-fill-mode8: animation-timing-function 含义分别如下:animation-n

cocos2d-x之逐帧动画

在bool HelloWorld::init()中添加如下内容 //缓存,帧动画的帧的缓存 auto cache = SpriteFrameCache::getInstance(); cache->addSpriteFramesWithFile("anim.plist");//添加帧缓存 Vector<SpriteFrame*> vec; //定义一个名字 char name[15]; //清空name数组 memset(name, 0, 15); //获取每一针的名

Android动画-帧动画

Android 平台提供了两种动画一种是 Frame动画,即顺序的播放事先做好的图像,与gif图片或者说跟放电影的原理相似,另一种是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变),本文中是是介绍第一种帧动画的的实现,帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画. 因为逐帧动画的帧序列内容不一样,不但给制作增加了负担而且最终输出的文件

关于Unity中的帧动画

一.帧动画 1: 美术准备好一个连续动作的离散图片;2: 程序在准确的时间来切换这个图片;3: 优点: 简单,速度快; 缺点:资源占用相对过大; 二.frame_anim组件编写 1: 代码里面强制要求加入Image组件;[RequireComponent(typeof(Image))]2: 帧动画的参数: (1) Sprite数组; (2) 间隔时间; (3) 是否循环播放; (4) 是否在加载的时候播放;3: 根据时间让Image组件显示正确的帧; 三 .实例步骤

Cocos2d-x Lua中帧动画

Cocos2d-x Lua中帧动画 帧动画就是按一定时间间隔.一定的顺序.一帧一帧地显示帧图片.我们的美工要为精灵的运动绘制每一帧图片,因此帧动画会由很多帧组成,按照一定的顺序切换这些图片就可以了. 在Cocos2d-x Lua中播放帧动画涉及到两个类:Animation和Animate,类图如图所示,Animation是动画类,它保存有很多动画帧,Animate类是动作类它继承于ActionInterval类,属于间隔动作类,它的作用是将Animation定义的动画转换成为动作进行执行,这样我

Cocos2d-x Lua中实例:帧动画使用

下面我们通过一个实例介绍一下帧动画的使用,这个实例如下图所示,点击Go按钮开始播放动画,这时候播放按钮标题变为Stop,点击Stop按钮可以停止播放动画. 帧动画实例 下面我们再看看具体的程序代码,首先看一下看GameScene.lua文件,它的代码如下: [html] view plaincopy local isPlaying = false -- 播放标识