C++ 靜態static 變量在 cocos2d-x 裡面使用誤區
void Cms::showMonster(CCArray* monsterArray,int type)
{
static int posN=0;
for(int i=0;icount();i++)
{
auto monsterSprite=(CCSprite*)monsterArray->objectAtIndex(i);
if(type==1)
{
monsterSprite->setPosition(ccp(640+posN*480,4*32-16));
}
if(type==2)
{
monsterSprite->setPosition(ccp(160+posN*640,192*2));
}
this->addChild(monsterSprite);
posN++;
}
}
在上述的這段代碼中,我使用了一個static 變量 posN, 在游戲重新開始時,發現怪物的位置不在原來的位置了。 這個問題是static靜態變量造成的,,我們知道靜態變量是在 內存空間的靜態 區域開辟的。。它有個特點,就是如果程序沒有結束,盡管是場景的跳轉,也無法銷毀這個變量。。所以當我們再次運行這段代碼是 靜態變量的計數不是從零開始,而是某個值;