cocos2d-iphone - 如何将 CCSprite 从一位家长转移到另一位家长?

标签 cocos2d-iphone ccsprite cclayer

我有一个 CCSpritesprite那是 CCLayer 的 child 叫 movingLayer这本身就是当前 CCLayer 的 child 运行我的游戏逻辑,所以它是 self在这种情况下。 movingLayer正在以永远重复的 Action 在屏幕上来回移动和 sprite骑在它上面。我要获取sprite “下车”的movingLayer并“继续”到 self它可以做一些自己的 Action 。

当我尝试这样做时,我需要告诉 movingLayer删除 spriteself添加 sprite.这就是我所做的...

- (void)attack:(id)sender
{
    [sprite stopAllActions];
    [movingLayer removeChild:sprite cleanup:YES];
    [self addChild:sprite z:1];
    CGFloat distance = ccpDistance(sprite.position, ccp(sprite.position.x, -sprite.contentSize.height/2));
    id goDown = [CCMoveTo actionWithDuration:distance/moveDuration position:ccp(sprite.position.x, -sprite.contentSize.height/2)];
    id repeatDown = [CCRepeatForever actionWithAction:[CCSequence actions:[CCMoveTo actionWithDuration:0 position:ccp(sprite.position.x, sprite.contentSize.height/2+self.contentSize.height)], [CCMoveTo actionWithDuration:moveDuration position:ccp(sprite.position.x, -sprite.contentSize.height/2)], nil]];
    id attackAction = [CCSequence actions:goDown, repeatDown, nil];
    [sprite runAction:attackAction];
}

我想 stopAllActions是多余的,但这不是问题。如果我删除 sprite来自 movingLayer在将其添加到 self 之前我因访问僵尸而崩溃,如果我尝试将其添加到 self首先,我因尝试添加已添加的内容而崩溃。

最佳答案

您是否尝试将清理设置为 NO?

或者,尝试在将 Sprite 从移动层移除之前保留 Sprite ,然后在完成后释放它:

[sprite retain];
[movingLayer removeChild:sprite cleanup:YES];
[self addChild:sprite z:1];
[sprite release];

关于cocos2d-iphone - 如何将 CCSprite 从一位家长转移到另一位家长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720615/

相关文章:

c++ - 复制 CCSprite

cocoa - Cocos2d 仅在首次运行应用程序时在 CCLayer 中崩溃

ios - cocos2d。对象类似于ccsprite但没有图片吗?

iphone - 如何用Cocos2d-iPhone画线

cocos2d-iphone - Cocos2d 最佳实践

audio - 使用超出范围的SimpleAudioEngine音量范围是否安全?

iphone - Cocos2d 检测特定 Sprite 上的触摸

iphone - 更改 cocos2D 中 CCSprite 的父级