2012-02-22 1 views
0

Box2D (및 Kobold2D)가있는 cocos2d iOS 앱이 있습니다. 나는 레이어에 18 개의 CCSprite 배열을 가지고있다. 그것들은 이제 spriteWithSpriteFrameName과 textureAtlas (당신에게 texturePacker 고맙습니다)를 사용하여 생성됩니다. 내가 18 sprites를 업데이 트하려면, 내가 할 수있는 생각 중 하나) 이미지를 변경 (하지만 난 그걸하는 방법 아니에요 - 난 setDisplayFrame에 대한 참조를 보았지만 배치 노드/텍스처에서 이미지를 가져올 필요가 spriteWithSPriteFrameName을 사용하는 아틀라스) 또는 b) 이전에 만든 스프라이트를 삭제하고 addChild로 레이어에 추가하고 새로운 스프라이트를 만듭니다 (18 개의 스프라이트, 하나의 "게임"에서 16 번). 리소스 사용 및 성능 측면에서 어떤 방법이 선호됩니까? a)처럼 보이지만, 다시 그 방법을 모릅니다.spriteWithSpriteFrameName을 사용하여 textureAtlas 이미지로 만든 스프라이트에서 이미지를 변경하는 방법

감사

답변

4

당신은 CCSprite에 확장으로 다음 코드를 추가 할 수 있습니다

-(void) setDisplayFrameNamed:(NSString*)name 
{ 
    [self setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:name]]; 
} 

당신이 Box2D의 사용하는 경우 당신은 또한 사용할 수있는 MonkeyJump Tutorial

+1

잘 사용하고 있습니다. –

+0

시도해보세요. Andreas와 Steffen에게 감사드립니다. – hangzhouharry

0

에 자세히 설명되어 GBox2D 이상적인 솔루션은 스프라이트를 피할 수 있다면 텍스처를 전환하지 않는 것입니다. 차선책은 Spriteframe을 통해 텍스처를 변경하는 것입니다 (이는 CCSpriteBatchNode의 사용을 배제 함).

새 스프라이트를 만드는 것은 일반적으로 성능에 부정적인 영향이 가장 큰 작업입니다.