2014-09-08 3 views
0

몇 가지 기본적인 문제가 cocos2d-x v3에 있습니다.cocos2d-x v3 Windows의 기본 사항

1) 나는 그런 스프라이트를 만들 때 : 나는 그들을 proplery erease 할 필요가 어떻게

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++; 
    } 
} 

작동하지만, 난 내가 애니메이션을 변경할 후 항상 함수를 호출해야합니다. 나는 spritebatch, 캐시 등을 저장하려고 시도했다. 그러나 전역 적으로 몇 시간이 지나면 애니메이션이 dissaper되었다.

답변

0

답변 1) 예.

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

// Deleter Later 
sprite1->removeFromParent(); 

답변 2) 당신은 애니메이션 (Animation*)을 생성하고 스프라이트에서 실행할 수 있습니다이 전체 시나리오입니다. 몇 가지 참고 사항 : 당신이 또 다시 애니메이션 재생을 원하는 경우에

  1. , 당신은 RepeatForever::create(YourAnimation)와 애니메이션의 무한한 버전을 만들 수 있습니다.
  2. 애니메이션을 만들고 싶지만 나중에 사용 (표시)하려면. 당신은 당신이과 retain()을 만들 수 있습니다 당신이 그것을 어떤 대상 (스프라이트)에서 실행할 때까지. (목표물을 달릴 때 ro release 잊지 마라)