2014-09-23 3 views
0

, как я понимаю, когда IMARK эмиттер с setAutoRemoveOnFinish (правда) он должен удалить эмиттер и каким-то образом вызвать CCParticleSystemQuad так, если я продлить CCParticleSystemQuad он должен вызвать расширенный класс CCParticleSystemQuad отвлекает то, чего не происходит. это мой простой классCocose2d-х ParticleSystemQuad продлив не называют деструктор, когда setAutoRemoveOnFinish (истина)

class CC_DLL ParticleFromFile : public ParticleSystemQuad 
{ 
public: 

    static ParticleFromFile* create(const std::string& filename);  
CC_CONSTRUCTOR_ACCESS: 

    ParticleFromFile(const std::string& filename); 

    virtual ~ParticleFromFile(); 

private: 
    CC_DISALLOW_COPY_AND_ASSIGN(ParticleFromFile); 
}; 

ParticleFromFile::ParticleFromFile(const std::string& filename) 

{ 
    ; 
} 

ParticleFromFile* ParticleFromFile::create(const std::string& filename) 
{ 
    ParticleFromFile* ret = new ParticleFromFile(filename); 

    if (ret->initWithFile(filename)) 
    { 
     ret->autorelease(); 
    } 
    else 
    { 
     CC_SAFE_DELETE(ret); 
    } 
    return ret; 
} 

ParticleFromFile::~ParticleFromFile() 
{ 
    int stop =0; 
} 

и это, как я настройка эмиттер

_emitterLocal = ParticleFromFile::create(stringPilstName); 
       _emitterLocal->setTag(EXPLOSION_FROM_FILE_TAG); 
       _emitterLocal->setAutoRemoveOnFinish(true); 
       _emitterLocal->retain(); 
       _emitterLocal->stopSystem(); 
       _emitterLocal->unscheduleUpdate(); 
       _emitterLocal->scheduleUpdate(); 

, а затем я запустить его с

_emitterLocal->resetSystem(); 

теперь каждая вещь работает отлично и частицы отлично работает, но он никогда не удалялся/не очищался, а деструктор никогда не называл , что мне здесь не хватает?

+0

Частица будет удаляться после 'Finish', но когда это закончится? – Emadpres

+0

dono это вопрос, – user63898

+0

Почему вы 'сохраняете()' перед 'stopSystem()'? проверьте мой ответ. PS: Я не вижу смысла в 'uncheduleUpdate()' и 'scheduleUpdate()'. Для чего они ?! – Emadpres

ответ

0

Чтобы удалить систему частиц У вас есть 2 + 1 выбор:

  1. Если ваша система частиц имеют конечную длительность, лучший способ заключается в использовании setAutoRemoveOnFinish(true). Он автоматически удалит систему из родительского узла, когда заканчивается система частиц. (Finsih время устанавливается с setDuration())

  2. Если ваша система частиц имеют бесконечную длительность, а затем использовать removeChild() с cleanup=true. Таким образом, система удаляется принудительно.

  3. Или вы можете использовать stopSystem() с setAutoRemoveOnFinish(true), и система будет удалена после окончания последней частицы (= продолжительность жизни последней частицы).

Смежные вопросы