在cocos2d-x中使用CCArray时遇到问题。 我在init()函数中声明了CCArray * arrCs,我为arrCs设置了值,但是在触摸事件中从它获取值后,它什么都没有。 请帮助我,谢天谢地。
在MainGame.cpp
中int radius= 32;
float scaleImage= 0.5;
int nItem= 60;
float pMargin= 5;
int limitTime= 70;
float timeWaiting= 8;
bool opTouch= true;
int lastIndex= -1;
Size visibleSize;
CCArray *arrCs;
bool MainGame::init(){
arrCs= CCArray::create();
int xx= pMargin+ radius;
int yy= pMargin+ radius;
int inLabel= 0;
for (int i=0; i<nItem; i++) {
inLabel= i;
if (i>((nItem/2)-1)) {
inLabel= i-(nItem/2);
}
CCString *iconName= CCString::createWithFormat("ricon_%i.png", inLabel);
Sprite *cs= CCSprite::create(iconName->getCString());
cs->setPosition(Point(xx, yy));
cs->setTag(-1);
cs->setScale(scaleImage);
/*****SET VALUE FOR arrCs ******************/
arrCs->addObject(cs);
this->addChild(cs, (1+ rand()%3));
xx= xx+ (radius*2)+ pMargin;
if (xx+ (radius/2)> visibleSize.width) {
xx= radius + pMargin;
yy= yy+(radius*2)+ pMargin;
}
}
}
void MainGame::onTouchesEnded(const std::vector<Touch*>& touches, Event* event){
/******** arrCs has nothing ************/
for (int i=0; i< arrCs->count(); i++) {
}
}
答案 0 :(得分:2)
CCArray是一个自动释放对象(请参阅create方法),并在离开init方法时被销毁。请在你的数组中调用retain(arrCs-&gt; retain()),你应该在onTouchesEnded中得到预期的结果。
此致,Laurent