나는 CCLayer
이라는 CCLayer
의 자식 인 sprite
이라고하는 CCSprite
을 가지고 있습니다.이 게임은 현재 내 게임 논리를 실행중인 CCLayer
의 자식이기 때문에 self
입니다. movingLayer
은 반복적 인 영원한 동작에서 화면을 가로 질러 앞뒤로 움직이며, sprite
이 그 위에 타고 있습니다. 나는 을 movingLayer
에서 "내리고"self
으로 "올라 타서"자신의 행동을 할 수있게하고 싶습니다. 나는이 작업을 수행 할 때한 부모에서 다른 부모로 CCSprite를 전송하는 방법은 무엇입니까?
, 나는 stopAllActions
중복 생각
- (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];
}
... 이것은 내가 무슨 짓을 sprite.
추가 sprite
및 self
을 제거하기 위해 movingLayer
말할 필요하지만, 그것은 문제가되지 않습니다 . 내가 self
에 추가하기 전에 을 movingLayer
에서 제거하면 나는 좀비에 액세스하기 위해 충돌하며, 먼저 self
에 추가하려고하면 이미 추가 된 것을 추가하려고 시도 할 때 충돌이 발생합니다.
하나! – Emadpres