cocos2d-x-3.0 alpha1与C++11练习五:飞镖忍者,如何检测碰撞(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-20 07:51 点击:

p>        }

p>         

p>        if (targetsToDelete->count() > 0) {

p>            projectilesToDelete->addObject(projectile);

p>            this->removeChild(projectile);

p>        }

p>        targetsToDelete->release();

p>    }

p>     

p>    CCARRAY_FOREACH(projectilesToDelete, obj2){

p>        Sprite *projectile = (Sprite *)obj2;

p>        this->removeChild(projectile);

p>        _projectiles->removeObject(projectile);

p>    }

p>     

p>    projectilesToDelete->release();

p>}

p>  代码稀松的紧,大意便是两个for循环,依次使用getBoundingBox与intersectsRect检测碰撞。

p> 

p>  最后一件事,在init return之前,我们要把update()加入到schedule里让它每帧都能被调用。

p> 

p> 

p>this->scheduleUpdate();

p>  

p> 

p>3,代码报错,问题出在哪里

p>编译&运行,程序报错了:

p> 

p> 

p> 

p>_projectiles变量为NULL。

p> 

p>在cocos2d-x 3.0中,使用Array::create创建的变量,自动加进了自动释放池,见其源码:

p> 

p> 

p>Array::create:

p>Array* Array::create()

p>{

p>    Array* pArray = new Array();

p> 

p>    if (pArray && pArray->init())

p>    {

p>        pArray->autorelease();

p>    }

p>    else

p>    {

p>        CC_SAFE_DELETE(pArray);

p>    }

p>     

p>    return pArray;

p>}

p>//---------

p>Object* Object::autorelease(void)

p>{

p>    PoolManager::sharedPoolManager()->addObject(this);

p>    return this;

p>}

p>答案便在这里,_projectiles与_targets变量,在未派上用场之前,便被自动释放管理器释放了。解决方法,便是在初始化之后,显式调用retain方法,在init中:

p> 

p> 

p>...

p>    this->_targets = Array::create();

p>    _targets->retain();

p>    this->_projectiles = Array::create();

p>    _projectiles->retain();

p>...

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1