2013-07-17 1 views
0

Im работает анимация, используя следующий кодзагрузки анимации через texturepacker в cocos2dx для Windows Phone

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("kid1.plist"); 


     CCSpriteBatchNode *spritesheet = CCSpriteBatchNode::create("kid1.png"); 
     this->addChild(spritesheet); 

     CCArray *kidframes = new CCArray; 
     for(int i=1; i<3; i++){ 
      CCString *filename = CCString::createWithFormat("kid%d.png",i); 
      CCSpriteFrame *frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(filename->getCString()); 
      kidframes->addObject(frame); 
     } 

     CCAnimation *runanim = CCAnimation::createWithSpriteFrames(kidframes, 0.1); 
     CCSprite *kiddo = CCSprite::createWithSpriteFrameName("kid2.png"); 

     kiddo->setPositionX(100*setScreenX); 
     kiddo->setPositionY(100*setScreenY); 
     kiddo->setScaleX(setScreenX); 
     kiddo->setScaleY(setScreenY); 

     CCAction *action = CCRepeatForever::create(CCAnimate::create(runanim)); 
     kiddo->runAction(action); 
     spritesheet->addChild(kiddo); 

ЭТО Isnt РАБОТАЮЩУЮ ЕГО ДАТЬ МНЕ ОШИБКУ, когда я добавляю КАДРЫ ДЛЯ МАЛЫША Фреймы CCAssert (m_uReference> 0, " счетчик ссылок должен превышать 0 "); любая помощь?

ответ

0

Попробуйте изменить

CCArray *kidframes = new CCArray; 

в

CCArray *kidframes = CCArray::create(); 
+0

никакой что не помогло. такая же ошибка – user2585915

+0

Можете ли вы показать сообщение об ошибке. – pktangyue

+0

Я добавил файлы plist снова, чтобы он не показывал ошибку сейчас, но то, что он делает, это то, что она запускает игру, но когда анимация должна начинать игру, она просто закрывается: / – user2585915

1

Вот то, что мы использовали, чтобы оживить наши спрайты.

CCAnimation *animation = CCAnimation::create(); 
animation->setDelayPerUnit(0.05f); 

//Add the frames to the animation 
string animationFramePrefix = "mySprite"; 
string animationFrames = "1,2,3,4,5,6,7,8,9"; 

char *strArr=new char[animationFrames.size()+1]; 
strArr[animationFrames.size()]=0; 
memcpy(strArr,animationFrames.c_str(),animationFrames.size()); 

const char* p; 
for (p = strtok(strArr, ","); p; p = strtok(NULL, ",")) 
{ 
    string frameName = animationFramePrefix+"_"+p+".png"; 
    CCSpriteFrame* sprite = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(frameName.c_str()); 
    animation->addSpriteFrame(sprite); 
} 

//initialize sprite with initial display frame 
CCSprite *mySprite = CCSprite::createWithSpriteFrameName("mySprite_1.png"); 

//then use the animation when required! 
CCAnimate *animationAction = CCAnimate::create(animation); 
CCRepeatForever *repeatAction = CCRepeatForever::create(animationAction); 
mySprite->runAction(repeatAction); 
0

вместо new ccarray();

попробовать create::ccarray();