2013-03-21 2 views
0

조금 간단한 문제이지만 해결할 수 없습니다. 두 번째 동일한 CCScene이 교체 된 후에 게임이 충돌합니다.

1

> (MAINMENU 장면) 응용 프로그램이 시작

2 시작> (하위 수준 장면이 교체)

3> 선택 첫 번째 수준 (Level1Scene가. 대체 게임이 시작.)

4-> 메인 메뉴로 돌아갑니다.

6가>> 첫 번째 수준을 충돌을

7- 선택 (MAINMENU 장면은 교체)

5 시작> (하위 수준 장면은 대체된다).

상자 (32842,0x3f5c9d98) malloc : * 개체에 대한 오류 0x4bed44 : 해제 된 개체에 대한 잘못된 체크섬 - 개체가 해제 된 후 수정되었을 가능성이 있습니다. *은 디버그 할 malloc_error_break에 중단 점을 설정합니다.

장면 a와 장면 b를 바꿀 때 해제 되었습니까?

내가 아는 한, pushScene만이 메모리에 장면을 유지합니다.

+(CCScene *) scene { 

    CCScene *scene = [CCScene node]; 

    HelloWorldLayer *layer = [HelloWorldLayer node]; 

    [scene addChild: layer]; 

    return scene; 
} 

장면과 레이어는 자동 출시 객체입니다. replaceScene이 호출 될 때 반드시 해제되어야합니다. (장면을 바꾸는 동안 이전 장면이 해제 된 경우)

+1

pushScene을 처음 사용하는 경우 replaceScene을 사용하십시오. - – Guru

+0

아직 동일한 문제가 있습니다. MainMenu 장면으로 돌아 가면 Level1Scene이 해제되어야합니다. 왜 내가 얻는가 개체에 대한 malloc : *** 오류 0x4da934 : 해제 된 개체에 대한 잘못된 체크섬 - 개체가 해제 된 후 수정되었을 가능성이 있습니다. *** 디버깅을 위해 malloc_error_break에 중단 점을 설정합니다. 게임 장면을 두 번째로 대체 할 때? – Quaso

답변

0

이 문제를 해결했습니다. 그 이상하지만 작동합니다.

나는 Collectable이라는 CCSprite의 하위 클래스를 가졌다. Collectable 객체가있는 장면을 두 번째로 대체하면 충돌이 발생합니다. 나는 이것을 CCNode와 그 작품으로 변환했다.

어쩌면 누군가를 도울 수 있습니다.