嵌套的runAction()

时间:2014-08-13 12:43:38

标签: animation cocos2d-iphone ccsprite

从CCCallBlock中调用runAction有多安全? 我的代码是:

CCSprite *sprite1;
CCSprite *sprite2;

...Some sprite init stuff...

[sprite1 runAction:
    [CCSequence actions:
        [CCScaleTo actionWithDuration:1.0 scale:2.0],
        [CCCallBlock actionWithBlock:^{
           [sprite2 runAction:[CCScaleTo actionWithDuration:5.0 scale:2.0]
        }],
        [CCScaleTo actionWithDuration:1.0 scale:1.0],
        nil
    ]
];

请注意,sprite1动画将在CCCallBlock中触发的sprite2动画结束之前结束。它崩溃但我不明白为什么。那么,打个电话是否安全(似乎不是,至少这样做)?为什么?如何安全(r)?

顺便说一句,让我的sprite2动画比sprite1短一个不会崩溃,所以我怀疑我的第二个动画是在某个地方发布但是我没有输入它的dealloc()......

THX。

1 个答案:

答案 0 :(得分:1)

您编写的代码无法编译FYI。

你在做什么工作得很好。我刚刚修复了您发布的编译错误代码后尝试了。这是我使用的:

CCSprite *sprite1 = [CCSprite spriteWithFile:@"temp.png"];
CCSprite *sprite2 = [CCSprite spriteWithFile:@"temp.png"];

[sprite1 runAction:[CCSequence actions:
    [CCScaleTo actionWithDuration:1.0 scale:2.0],
    [CCCallBlock actionWithBlock:^
    {
        [sprite2 runAction:[CCScaleTo actionWithDuration:5.0 scale:2.0]];
    }],
    [CCScaleTo actionWithDuration:1.0 scale:1.0],
    nil]
];

[self addChild:sprite1];
[self addChild:sprite2];