문제

나는 거대한 캐릭터 애니메이션 세트 (초과 25 개 다른)를 포함하는 Cocos2D를 사용하여 iPhone 게임을하고 있습니다. 이 주문형. 그러나 장치에서 이것을 테스트했을 때,이 애니메이션 주위에 Lota Performance 딸꾹질이있었습니다. 프레임이 누락되었습니다 .. 게임 매달려 이미지가 로딩되는 곳에서 ..

그래서 나는 끊임없이 앞서 살펴보고 가능한 아틀라스 프리 자메나거를 만들 수있는 사전로드 및 캐싱 기술을 만들기로 결정했습니다. 애니메이션 중에 필요하고 유지 관리 할 수있는 AtlasspriteManagers를 만들 수 있습니다. 나중에이 사전에서 제거하고 무료 메모리를 제거합니다. 그리고 나는 PerformSectorInbackground 메소드를 사용 하여이 함수를 '로드'를 호출 하고이 AtlassPritemanager를 작성하고 사전에 저장합니다.

[self performSelectorInBackground:@selector(loadASM:) withObject:fileName];

-(ASMHolder *)loadASM:(NSString *)fileName
{
AtlasSpriteManager *sprMgr = [AtlasSpriteManager spriteManagerWithFile:fileName capacity:40];
ASMHolder *asmHolder = [[ASMHolder alloc] init];
asmHolder.sprMgr = sprMgr; asmHolder.retainCount++;
[asmDict setObject:asmHolder forKey:fileName];

return asmHolder;
}

그러나 PerformSelectorInbackground를 사용하여 배경 에서이 메소드를 호출하면 이미지가로드되지 않는 것 같습니다. 이미지가 나타나야하는 곳에 흰색 상자가 나타납니다. 그러나 AtlassPriteManager 객체가 생성되고 사전에 있습니다. 그것은 빈 스프라이트로 판명됩니다. 그리고 배경 통화 대신, 'loadasm'방법을 직접 호출하려면 (예 : [self loadasm : filename]) 이미지가로드됩니다. 그러나 물론, 물론, 동기 호출이므로 지연 ..

나는 심지어 AtlasspriteManagers 대신 Texture2D 객체를 캐싱 시도했지만 결과는 동일합니다.

(또한 Texturemanager의 addimageasync를 시도했습니다.

도와주세요..

감사합니다 Sankar

도움이 되었습니까?

해결책

여러 스레드에서 OpenGL을 사용하려면 특별한 작업을 수행해야합니다. 보다 이 질문.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top