2014-09-23 63 views
0

我IMARK與setAutoRemoveOnFinish發射器時(真) 應該刪除發射器並以某種方式引發CCParticleSystemQuad所以如果我延長CCParticleSystemQuad 應該致電瞭解擴展CCParticleSystemQuad類分散了什麼沒有發生。 這是我簡單的類Cocose2d-X 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 2014-09-23 13:11:47

+0

dono這是問題, – user63898 2014-09-23 13:22:41

+0

爲什麼''在stopSystem()'之前保留()'?看看我的答案。 PS:我在'unscheduleUpdate()'和'scheduleUpdate()'中看不到任何一點。他們是幹什麼的?! – Emadpres 2014-09-23 15:07:25

回答

0

要刪除粒子系統,你有2點+ 1的選擇:

  1. 如果您的粒子系統有有限的時間,最好的辦法是用setAutoRemoveOnFinish(true)。當粒子系統結束時它會自動從父節點移除系統。 (Finsih時間使用setDuration()

  2. 如果您的粒子系統有無限持續時間,然後用removeChild()cleanup=true。這樣系統就被強制刪除了。

  3. 或者您可以使用stopSystem()setAutoRemoveOnFinish(true),系統將在最後一個粒子結束後(=最後一個粒子的壽命)被移除。

相關問題