CCSprite runAction和Remove

时间:2011-09-29 20:03:40

标签: objective-c ipad cocos2d-iphone

我有ccLayer我试图让它下雨。 在init i上安排以下内容:

        [self schedule:@selector(throwRain) interval:0.1f];

以下是代码的其余部分:

-(void) throwRain {
    CCSprite *gota;
    for (int i = 1; i <= 6; i++){
        gota = [CCSprite spriteWithFile:@"4_gota.png"];
        gota.position = ccp(arc4random() % 768, 1060);
        gota.scale = (arc4random () % 25 + 50.0f) / 100.0f;
        gota.rotation = 35 ;
        [self addChild:gota z:arc4random() % 5 + 7];

        [gota runAction:[CCSequence actions:[CCEaseRateAction actionWithAction:[CCMoveTo actionWithDuration:3.0f + (arc4random() % 200) / 100.0f position:ccp(gota.position.x, 0)] rate:3]  , [CCCallFunc actionWithTarget:self selector:@selector(spriteDone:)], nil]];
    }
}

-(void) spriteDone:(id)sender {
    [self removeChild:sender cleanup:YES];
}   

然而,水滴落到底部并且只停留在那里,永远不会被移除。任何的想法? 感谢。

1 个答案:

答案 0 :(得分:1)

尝试从CCCallFunc更改为CCCallFuncN。 'N'代表Node,并将正在执行操作的Node传递给选择器。