n'tMy 게임 장면이 replaceScene을 사용하여 레벨 선택 장면에서 실행되고 레벨 번호가 전달됩니다. 게임 레이어가 plist에서 데이터를로드 한 다음 세계 공간에있는 객체 (box2d 본문이있는 CCSprite 하위 클래스). 영웅 캐릭터는 레벨이 재생되는 동안 화면 가운데에 남아 있습니다. 레이어의 위치를 조정하여 레이어 스케일과 함께 이동 속도에 따라 확대 및 축소합니다. 예를 들어Cocos2d 게임 레이어가 실행 중일 때 부드럽게 대체됩니다. 동일한 장면으로 대체합니다.
:
CGPoint layerPosition = ccp(((screenSize.width/2) - ourHero.position.x) * sceneScale, ((screenSize.height/2) - ourHero.position.y) * sceneScale);
[self setPosition:layerPosition];
[self setScale:sceneScale];
문제는, 레벨 속도 증가와 계층이 축소되면 움직임이 종종 육포 할 수 있습니다 실행 처음 (단지 시작에 몇 초 동안). 그러나 사용자가 레벨을 다시 시작하면 (버튼이 replaceScene을 실행) 대체 레벨의 이동은 속도에서도 완벽하게 매끄 럽습니다.
나는 batchnode를 사용하고 있으며 스프라이트 이미지를 프레임 캐시에 저장했습니다. 나는 프레임 캐시를 설정하고 레벨 선택 장면에서 사운드를 프리로드하려고 시도했지만 어떤 차이점도 없습니다. 이벤트를 다시 시작한 수준을 동일한 동작으로 표시 할 수 있는지 확인하기 위해 수준간에 캐시를 제거하려고 시도했지만 아무 것도하지 않았습니다.
아무도이 문제의 원인을 제시하고이를 제거 할 수있는 방법을 제안 할 수 있습니까?
감사합니다.
물론 처음으로 게임 장면을로드하면 모든 개체가 만들어지기 때문에 게임 장면이 느려질 것입니다. 반면에 두 번째로는 몇 가지 사항 만 만들어야합니다. 어쨌든 내가 권장하는 것은 Time Profiler를 사용하고 지연을 일으키는 것이 무엇인지 확인하는 것입니다. 그것의 소리에서 당신은 모든 것을 올바른 방법으로하고 있습니다. 그래서 Instruments가 말하는 것을하도록하십시오. –
답장을 보내 주셔서 감사합니다. CCNode Vist (CCSpriteBatchNode 방문시 44 %), EAGLView swapBuffers 29 %, CCScheduler tick 1.9 %에 58 %를 지출합니다. – TinoK
이상한 점은 레벨의 첫 번째 플레이에서 육중 한 움직임이 지속된다는 것입니다. 분명히 모든 물체가 어느 시점에 만들어 졌을 것이므로 불안감이 가라 앉을 것입니다. 모든 피드백에 대해 다시 한 번 감사드립니다 !! – TinoK