刚开始学cocos2dx,现在写一个类似坦克大战的游戏,遇到了一些很棘手的问题,希望有大神帮我看看,感激不尽。
第一个问题:
Bullet * Bullet::createBulletWithTank(NewTank* tank)
{
auto * bullet = new Bullet();
CCSpriteBatchNode* spriteTexture = CCSpriteBatchNode::create(“bullet.png”);
bullet = (Bullet *)CCSprite::createWithTexture(spriteTexture->getTexture());
bullet->initBullettWithTank(tank);
bullet->autorelease();
return bullet;
}
一个很简单的创建一个子弹,但是运行之后出现断点,提示
Assert: Node still marked as running on node destruction! Was base class onExit() called in derived class onExit() implementations?
百度后发现是OnExit()函数的问题,可是我在整个程序中并没有重载OnExit()函数,所以不知道是什么问题。
但是注释掉bullet->autorelease(); 之后就不在本问题。
第二个问题:
我创建了一个Tank类型用来创建我的主角,在重载的create方法里就会调用子弹的create方法(如上方法,注释掉bullet->autorelease()后)来创建一个属于这个Tank的子弹。
然后我又创建了一个Enemy类型继承于Tank类型,创建这个实例时出现异常Unhandled exception at 07580C42D in MyCppGame.exe:Microsoft C++ exception:std::bad_alloc atmemory location 00050E474
更奇怪的是 在重新生成解决方案的第一次运行当中没有任何问题,之后的运行都会弹出以上错误。
我对cocos2dx的内存机制很不熟悉,希望有大神能指点一下,真心感谢。