cocos2d-x v3 Windows中很少有基础知识

时间:2014-09-08 13:15:45

标签: cocos2d-x

我对cocos2d-x v3中的一些问题有一些基本的问题。

1。)当我创建这样的精灵时:

cocos2d::Sprite *sprite1 = cocos2d::Sprite::create("test.png");
auto sprite2 = cocos2d::Sprite::create("test.png");

我如何为他们提供便利?我应该使用autorelease(它在创建后使用时会崩溃)吗?我可以使用两种变体:

sprite1->removeFromParentAndCleanup(true);
sprite2->removeFromParentAndCleanup(true); 

2。)当我希望动画在我的HelloWorldScene中有效时,我可以在需要时使用它,我该怎么办呢?我尝试过类似的东西:

void HelloWorld::runAnimationWalk() {
    auto spritebatch = cocos2d::SpriteBatchNode::create("robo.png");
    auto cache = cocos2d::SpriteFrameCache::getInstance();
    cache->addSpriteFramesWithFile("robo.plist");
    //spritebatch->addChild(worker);
    Vector<SpriteFrame *> animFrames(5);
    char str[100] = {0};

    for(int i = 1; i <= 5; i++) 
    {
        sprintf(str, "robot%i.png", i);
        cocos2d::SpriteFrame* frame = cache->getSpriteFrameByName( str );
        animFrames.pushBack(frame);
    }

    auto animWalk = cocos2d::Animation::createWithSpriteFrames(animFrames, 0.1f);   

    vector<Worker>::iterator it = workerVector.begin();
    for(int k = 0; k<workerVector.size();k++) {
        if(it->getType() == 1) 
            it->getWorker()->runAction(RepeatForever::create(Animate::create(animWalk)));
        it++;
    }
}

这样可行,但我想在改变动画后总是调用该函数。我试图保存spograbatch,缓存等...全局,但动画在几次后消失了。

1 个答案:

答案 0 :(得分:0)

回答1)是的。这是一个完整的场景:

//Create
Sprite *sprite1 = cocos2d::Sprite::create("test.png");
this->addChild(sprite1);

// Deleter Later
sprite1->removeFromParent();

回答2)您可以创建动画(Animation*)并在任何精灵上运行它。 一些说明:

  1. 如果您想要反复播放动画,可以使用RepeatForever::create(YourAnimation)制作无限版动画。
  2. 如果您想创建动画但稍后使用(显示)它。您可以创建Animation*retain(),直到在某个目标(精灵)上运行它为止。 (在目标上运行时不要忘记ro release