bool Shoot::init()
{
m_mosArr=CCArray::create();
m_mosArr->retain();
CCSprite*monster=NULL;
for (int i=0;i<10;i++)
{
monster=CCSprite::create("CloseNormal.png");
monster->setPosition(ccp(300,300));
monster->retain();
this->addChild(monster);
m_mosArr->addObject(monster);
}
intaq();
return true;
}
CCArray* Shoot::getMonsterList()
{
return m_mosArr;
}
```
调用代码
bool HelloWorld::init()
{
AllocConsole(); freopen("CONIN$", "r", stdin); freopen("CONOUT$", "w", stdout); freopen("CONOUT$", "w", stderr);
Shoot*sh=Shoot::create();
this->addChild(sh);
Shoot* layer =Shoot::create();
CCArray* monsterList = layer->getMonsterList();
CCObject*obj=NULL;
CCSprite*monster=NULL;
CCARRAY_FOREACH(monsterList,obj)
{
// monster=dynamic_cast(obj);
monster=(CCSprite*)obj;
if (monster!=NULL)
{
CCLOG("11");
monster->setPosition(ccp(800,300));
}
}
return true;
}
```
这里只出现了10个CCLOG的11,setPosition无效以及其他函数无效,应如何解决?
PS:
Shot里的CCArray即m_mosArr是有用的,也就是说无论设置setPosition还是其他都有效果,只有HelloWord里的CCArray* monsterList = layer->getMonsterList();后的CCArray不能做setPosition等函数,只有10个CCLOG的11.
monster被加到了shoot里,但是shoot没有加到helloworld里,快匿吧,我忍不住要吐槽了
瞎扯!明明不是这问题!比你说的这个白痴多了!是我创建了两个Shoot,因为第一个Shoot是随手创建的,后来就给忘了,导致一个没显示,一个显示了,即this->addChild(sh);,然后移动的是没显示的那个……然后就导致了没有移动,却数量准确的错觉……
原来如此。。 我也是代码没看仔细。。。