2012-06-20 4 views
0

아직 C++에 익숙하지 않으므로 쉽게 진행할 수 있습니다. 그러나 여기에 약간의 문제가 있습니다.NSStringwithformat을 변환하는 C++ 작동 : 다른 Cocos2dx

나는 스프라이트 프레임을 추가하는 루프를 실행하는거야하지만 난 C++

오브젝티브 C에 내 목표 - C를 번역 몇 가지 문제가 있어요

for (int i = 0; i < 24; i++) { 
     [initalTurnAnimationFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"%@%d.png", tilt, i]]]; 
} 

C++

for (int i = 0; i < 24; i++) { 

    stringstream tempString; 
    tempString <<i<<".png";   
    frameStore->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(tempString.str().c_str())); 
} 

하지만 "참조 횟수가 0보다 커야합니다"라고 표시된 인용문에 액세스 할 때마다

기본 개념을 놓친 경우에도 도움을 받으십시오.

감사합니다.

+0

"참조 횟수가 0보다 커야합니다"는 것은 C++가 아니라 objc에 문제가 있음을 의미합니다. C++은 일반적으로 참조 카운팅을 사용하지 않습니다. – mydogisbox

+0

cocos2dx는 참조 카운팅 시스템을 사용하는 자체 기본 CCObject 클래스를 구현합니다. – Morion

답변

0

SpriteFrames는 Spritesheets과 함께 작동합니다.

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(<#const char *pszPlist#>) 

많은 도구가있는 스프라이트 시트를 만들 수 있습니다. Texturepacker를 사용합니다. 대안은 Zwoptex 여야합니다. Texturepacker로 Spritesheet를 생성하면 스프라이트 시트와 .plist 파일이 생성됩니다. 위의 매개 변수는 .plist 파일의 이름입니다. 이 .plist 파일에는 키가 있습니다.

CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(key) 

이 메서드는 이전에 추가 한 Spritesheet에서 CCSpriteFrame *을 제공합니다. Sprite 시트를 추가하지 않으면 방금 경험 한 오류가 발생합니다.

관련 문제