我有一个名为Projectiles的类,它继承自CCSprite类, 目前有2种类型的射弹,雨1和雨2。 我有一种方法,每2秒产生一堆这些精灵,给人一种脉动的雨的幻觉。 这些雨精灵中的每一个都被添加到阵列中,它们受到重力的影响。
事实上,它的工作情况非常完美,除了内存管理以及不久之后这个雨循环不断创建精灵我会大幅降低帧速率。
理想情况下,如果下雨(在重力常数下)下降到屏幕高度以下,我想要删除雨精灵。从_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];
}
}
答案 0 :(得分:1)
删除rain1 = nil,这应该有效。 你将rain1指针改为nil,这就是为什么当你调用[self removechild]时它无法找到要删除的rain1精灵。