• 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;
    }
  • 相关阅读:
    2016/1/18
    正则知识点总结
    爬虫反反爬虫:转
    健身与饮食随想--年轻的每一天,都是弥足珍贵的!!!
    python time模块
    c语言求两个数的最大公因数(穷举法,欧几里得算法,递归)
    c语言递归解决汉诺塔问题
    python用函数打印素数(代码未优化)
    羊车门问题提交
    Delphi Tokyo 10.2.3
  • 原文地址:https://www.cnblogs.com/yufenghou/p/4149099.html
Copyright © 2020-2023  润新知