我所拥有的是一种创建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声明 - 我试图将它声明为一个单独的变量,运气不佳。
我在这里误解了什么?
答案 0 :(得分:0)
我是新来的,所以我不允许发表评论(这可能更适合作为评论)但是:我还没有能够重现你的问题。该问题与CCActionDelay或您在debris
精灵上运行的操作无关。您可以通过在不同的设置中运行序列来自行测试。 Ergo:代码中的其他地方一定存在问题。对不起,但根据您发布的示例代码,我无法继续提供帮助。