2013-08-24 5 views
0

다음은 내 장면 문제입니다. 메뉴 장면부터 시작하여 InGame 장면으로 이동하고 캐릭터가 죽었을 때 메뉴 장면으로 다시 이동합니다 :장면을 다시 시작할 때 충돌이 발생합니다.

[[CCDirector sharedDirector] replaceScene:[MainMenu scene]]; 

[[CCDirector sharedDirector] replaceScene:[InGame scene]]; 

오류와 함께, 내 SpriteSheet 충돌을 게임을 잃고, 게임으로 돌아 가려고 후 :

'CCSprite is not using the same texture id' 
나는 spriteSheet에 질감을 추가 할 때

- (void) initSprite:(NSString *)plist andTexture:(NSString *)texture_ { 

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:plist]; 

spriteSheet = [CCSpriteBatchNode batchNodeWithFile:texture_]; 

NSMutableArray *walkAnimFrames = [NSMutableArray array]; 

for (int i=1; i<=12; i++) { 
    [walkAnimFrames addObject: 
    [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: 
     [NSString stringWithFormat:@"%d.png",i]]]; 
} 

CCAnimation *walkAnim = [CCAnimation animationWithSpriteFrames:walkAnimFrames delay:0.05f]; 

texture = [CCSprite spriteWithSpriteFrameName:@"1.png"]; 
walkAction = [CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:walkAnim]]; 
[texture runAction:walkAction]; 

texture.position = position; 
texture.tag = HeroType; 
[spriteSheet addChild:texture]; 

[self addChild:spriteSheet]; 
} 

충돌이 발생합니다 : 여기

내가 애니메이션 init을 어떻게

[spriteSheet addChild:texture]; 

내가 문제가 텍스처의 해제에서 오는 생각을 ..

ARC를 사용하지 않습니다.

+2

여기에 스프라이트 시트를 사용하는 것은 불필요합니다. initSprite로 작성한 각 스프라이트에 대해 해당 스프라이트에 대한 스프라이트 배치 노드를 작성합니다. 배치 노드가 있거나 없으면 스프라이트 당 하나의 그리기 호출이 종료됩니다. 일괄 처리는 애니메이션의 속도를 향상시키지 않고 동일한 텍스처를 사용하여 여러 스프라이트를 렌더링하는 속도를 높여 단일 그리기 호출에서 10 또는 수백 개의 동일한 스프라이트를 표시 할 수 있습니다. – LearnCocos2D

+0

나는 캐릭터가 움직이는 애니메이션을 그리는데 사용하고 있다는 것을 이해한다. 나는 12 스프라이트의 스프라이트 시트 (http://oi42.tinypic.com/2s6oe3n.jpg)를 가지고 있는데, 당신의 의견으로는 그것을하기에 가장 좋은 방법은 무엇일까요? – thegameg

답변

1

캐시에서 "quit-restart sequence"전에 생성 된 다른 애니메이션과 일치하는 "1.png"가있을 것입니다. 어쩌면 다시 시작하기 전에 스프라이트 프레임 캐시 (그리고 아마도 다른 많은 것들)를 제거하기를 원할 것입니다.

"1.png"~ "NNNN.png"를 완전히 피할 것입니다. 모든 애니메이션에 애니메이션이 포함될 가능성이 높습니다. 대신 내가 좋아하는 것들을 사용, 오른쪽, 유휴 상태 아래

walk_classKey_upNNNN.png를 {,,,를 위해 ...) 죽은 fight_classKey_strikeNNNN.png {파업, 상처, 점프 ... 그리고 다른지도의 자세는 내가 필요 예)

classKey 내가 가진 {전투기, 불량, ... 등 ... 중 유일한 군인 형)

만 내 속성 목록/텍스처 같은

walk_fighter_up-hd.plist를 (이름 텍스처 패커를 사용하면 plist가 텍스처 이름을 임베딩합니다. fight_rogue_cheapShot-hd.plist (cheapShot은 현재 게임에서 내 도적 기술 중 하나입니다).

+0

캐시였습니다. 고마워요. '[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];를 추가하면됩니다. NNNN.png는 무엇에 해당합니까? – thegameg

+0

명명 된 프레임 1.png, 2.png, 3.png ... NNN.png. – YvesLeBorg