SpriteAnimation в COCOS2DX с plist

привет, я использую этот код для анимации спрайта с помощью cocos2dx.

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("suhas.plist");
    CCLog("#########################");
    CCSpriteBatchNode *spriteSheet = CCSpriteBatchNode::batchNodeWithFile("suhas.PNG");
    CCLog("*********************************");
    this->addChild(spriteSheet);
    CCLog("*********************************");
    CCArray *bearArray = new CCArray();
     for(int i = 1; i <= 8; i++)
     {
         CCLog("*********************************");
        char name[32] = {0}; 
         sprintf(name, "bear%d.png",i);
        bearArray->addObject(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(name));
}
    CCAnimation *walkAnim = CCAnimation::animationWithSpriteFrames(bearArray, 0.1f);
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCSprite *bear = CCSprite::spriteWithSpriteFrameName("bear1.png");
    bear->setPosition(ccp(size.width/2, size.height/2));
    CCAction *walkAction = CCRepeatForever::actionWithAction(CCAnimate::actionWithAnimation(walkAnim));
    bear->runAction(walkAction);
    spriteSheet->addChild(bear);
    return true;

Но мой код вылетает. и дает ошибку

cocos2d: CCSpriteFrameCache: Trying to use file D:\cocos2dnew\SPRITEAnimDemo\Resources\suhas.png as texture
First-chance exception at 0x00000000 in SPRITEAnimDemo.win32.exe: 0xC0000005: Access violation.
Unhandled exception at 0x00000000 in SPRITEAnimDemo.win32.exe: 0xC0000005: Access violation.
The program '[1012] SPRITEAnimDemo.win32.exe: Native' has exited with code -1073741819 (0xc0000005).

Я попробовал Google для решения этой проблемы. Пожалуйста помогите.


person Lalit Chattar    schedule 08.09.2012    source источник
comment
Обратитесь к этому blogs.abeazam.com/dev/2012/07/   -  person user1169079    schedule 09.10.2012


Ответы (2)


Изменить эту строку

*spriteSheet = CCSpriteBatchNode::batchNodeWithFile("suhas.PNG");

с участием

*spriteSheet = CCSpriteBatchNode::batchNodeWithFile("suhas.png");
person Mohd Kalimullah Sheikh    schedule 21.12.2012

В более новой версии cocos2d-x вы можете сначала добавить пакетный узел:

 SpriteFrameCache::getInstance()->addSpriteFramesWithFile("sprite_sheet.plist");
_gameBatchNode = SpriteBatchNode::create("sprite_sheet.png");
this->addChild(_gameBatchNode, 1);

для анимации:

 auto animation = Animation::create();
int i;
for(i = 1; i <= 10; i++) {
    auto name = String::createWithFormat("boom%i.png", i);
    //auto name = String::createWithFormat("meteor-%i.png", i);
    auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(name->getCString());
    animation->addSpriteFrame(frame);
}

animation->setDelayPerUnit(1 / 10.0f);
animation->setRestoreOriginalFrame(true);

обратите внимание, что boom.png и meteor.png находятся внутри sprite_sheet.plist

person nhuluseda    schedule 15.02.2018