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;
}
原文地址:https://www.cnblogs.com/yufenghou/p/4149099.html