2014-10-21 2 views
0

내 cocos2d 게임에서 이상한 일이 발생합니다. 문제를 파악할 수 없습니다.이상한 노 센스 CCSpriteBatchNode 예외

내 게임, 인트로 1 개, 메인 메뉴 1 개, 게임 1 개의 파일 구조가 매우 간단합니다.

내가 개발하는 동안 시간을 ​​절약하기 위해 게임을 인트로 레이어에서 건너 뛰기 위해 메뉴 레이어를 건너 뛰었습니다.

이제 게임을 끝내고 기본 메뉴를 다시 추가하고 게임 레이어가 호출되면 충돌이 발생합니다.

주 메뉴 레이어를 건너 뛰면 절대로 충돌하지 않습니다.

편집 :

중요, 나는 그것이 잘 작동 메인 메뉴 층을 제거하는 경우 ... 주 메뉴는 어떤 텍스처 아틀라스를 추가하지 않습니다, 나는 전체 게임을 전체 사용하고 하나가있다.

_myitens = [CCSpriteBatchNode batchNodeWithFile:@"mytextureatlas.png"; 

재미있는 것은 파일이 아니라 질감에서 버튼 (이미지를 가지고 메인 메뉴 레이어에만 기능입니다 :이 gamelayer 코드에서

"CCSprite: Batched sprites should use the same texture as the batchnode" 

:

메시지 오류입니다 아틀라스).

매우 혼란 스럽습니다.이 문제에 접근하는 방법을 알 수 없습니다.

모든 팁이 유효합니다. 감사합니다.

+0

는 예외 중단 점을 추가 내가 추가 않았다 다음 스프라이트가 – LearnCocos2D

+0

을 사용하는 텍스처와 스프라이트 프레임을 확인할 수 있습니다, 당신은 문제의 정확한 라인을 찾을 수 있습니다, 예외가 시작됩니다 setDisplayFrame의 재생 가능 스프라이트에서 기본 클래스를 호출하면 덮어 씁니다. [super setDisplayFrame : paramFrame]; – RollRoll

+0

는 문제가있는 프레임을 식별 할 수 없습니다. cocos2d 2.x를 사용합니다. – RollRoll

답변

0

일반적인 원인 중 하나는 특히 두 장면에서 동일한 이미지가있을 때 발생합니다.

예를 들어, mytextureatlas.plist 및 notmytextureatlas.plist가 있고 둘 다 이미지가 같은 이름 인 경우 "player.png"라고 말하면됩니다. mytextureatlas를 처음로드하면 모두 괜찮아 보입니다. 그러나 먼저 notmytextureatlas를로드하고 나중에 mytextureatlas를 사용하여 배치 노드에 player.png 스프라이트를 추가하려고하면 cocos2d는 notmytextureatlas에서 실제로 player.png를 사용하여이 오류를 발생시킵니다.

모든 텍스처 아트라스의 모든 이미지 이름이 고유한지 다시 확인하십시오.

+0

게임에서 하나의 텍스처 아틀라스 만 있습니다. 기본 메뉴 레이어를 제거하면 잘 작동합니다. – RollRoll

+0

저는 여기에 정말 희망이 없습니다. 에 대해 불평하는 batchnode에서 ... – RollRoll

0

_myitems에 스프라이트를 어떻게 추가합니까? 당신은 다른 질감으로 만들어진 아이들을 추가하고 있습니다, 그것은 오류의 의미이며 그것이 일어나는 것입니다.

예외하지 않은 느낌, 그것은 어딘가에 당신이 순종하지 정확한 상태를 의미이다 가 batchnode가 batchnode 자체 같은 텍스처로 초기화 아이를 가질해야합니다 (그리고 그것을하는 데 사용 이후로는 의미가 일괄 GL 호출). 예를 들어

:

_myitems = [CCSpriteBatchNode batchNodeWithFile:@"mytextureatlas.png"]; 
[_myitems addChild:[CCSprite spriteWithTexture:@"othertexture.png"]]; 

이 오류가 발생합니다.당신이 시도해야합니다 :

[_myitems addChild:[CCSprite spriteWithTexture:_myitems.textureAtlas.texture]]; 
+0

내 모든 텍스처가 동일한 batchnode에서 사용되고 있으며, 전체 게임에 대해 하나만 있습니다. 나는 그것에 스프라이트를 추가한다. [_myitems addChild : _heroSprite]; – RollRoll