我有一个叫做Projectiles的类,它继承自CCSprite类,目前有两种类型的projectiles,rain1和rain2。我有一个方法,它每2秒创建一堆这样的精灵,给人一种脉动的雨的错觉。这些雨精灵中的每一个都被添加到数组_projectiles中,并且它受到重力的影响。
事实上,它工作得很完美,除了内存管理,在这个雨循环不断产生精灵后不久,我得到了大量的帧率下降。
理想情况下,如果雨(在重力恒定的情况下)低于屏幕高度,我希望删除雨精灵。从_projectiles数组中删除,从视图中完全删除!
我的代码没有做到这一点!求求你我需要一些帮助。
下面是一个代码片段:
for (Projectile *rain1 in _projectiles){
if (rain1.position.y < -winSize.height) {
rain1 = nil;
[_projectiles removeObject: rain1];
[self removeChild:rain1 cleanup:YES];
[rain1 release];
}
}
for (Projectile *rain2 in _projectiles){
if (rain2.position.y < -winSize.height) {
rain2 = nil;
[_projectiles removeObject: rain2];
[self removeChild:rain2 cleanup:YES];
[rain2 release];
}
}发布于 2011-02-22 14:06:01
删除rain1 = nil,这应该可以工作。你将rain1指针改为空,这就是为什么当你调用self removechild时,它找不到要移除的rain1精灵。
https://stackoverflow.com/questions/5074463
复制相似问题