CCActionDelay无法按预期工作

时间:2015-06-18 11:04:21

标签: objective-c iphone cocos2d-iphone

我所拥有的是一种创建CCSprites的方法:

-(void)createDebrisAtPosition:(CGPoint)position{
    NSInteger numberOfPieces = [random randomWithMin:5 max:20];
    for (int i=0; i<numberOfPieces; i++) {
        CCSprite *debris = [CCSprite spriteWithImageNamed:@"debri.png"];
        debris.position = position;
        debris.physicsBody = [CCPhysicsBody bodyWithRect:CGRectMake(0, 0, debris.contentSize.width, debris.contentSize.height) cornerRadius:0];
        debris.physicsBody.collisionType = @"debris";
        debris.name = @"Debris";
        CCActionRemove *removeAction = [CCActionRemove action];
        CCActionSequence *sequence = [CCActionSequence actions:[CCActionDelay actionWithDuration:2.0], removeAction, nil];
        [physics addChild:debris];
//physics is a CCPhysicsNode here
        [debris runAction:sequence];
    }
}

然后在特定的碰撞事件期间调用此方法:

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair enemy:(EnemyNode*)enemy projectile:(ProjectileNode*)projectile
{
    [enemy removeFromParent];
    [projectile removeFromParent];
    [self createDebrisAtPosition:enemy.position];
    return NO;
}

预期行为:CCSprites应该出现,然后仅在2.0秒后删除。 实际行为:CCSprites会在一瞬间出现,然后立即被删除。

我也尝试过CCActionInterval,CCActionEaseOut,但它们没有用(而且他们不应该,根据文档,但CCActionDelay - 应该,但不工作)。我更改了方法调用的顺序(addChild之前和之后的runAction),以及动作调用的顺序,这也不起作用。不要直接在CCActionSequence中关注CCActionDelay声明 - 我试图将它声明为一个单独的变量,运气不佳。

我在这里误解了什么?

1 个答案:

答案 0 :(得分:0)

我是新来的,所以我不允许发表评论(这可能更适合作为评论)但是:我还没有能够重现你的问题。该问题与CCActionDelay或您在debris精灵上运行的操作无关。您可以通过在不同的设置中运行序列来自行测试。 Ergo:代码中的其他地方一定存在问题。对不起,但根据您发布的示例代码,我无法继续提供帮助。