Cocos2dx动画(不使用弃用的方法)

时间:2012-08-29 16:31:21

标签: c++ objective-c animation cocos2d-x

我正在尝试了解动画如何在cocos2dx上运行(我正在开发OSX for IPad目标)。

我已按照此tutorial尝试从objective-c引导至C++

这是我的代码:

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

CCSpriteBatchNode* spriteBatchNode = CCSpriteBatchNode::create("oras.png", 8);
this->addChild(spriteBatchNode);

CCAnimation *bearWalkingAnimation = CCAnimation::create();

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

    std::stringstream ss;
    ss << "bear" << i + 1  << ".png";

    std::string name = ss.str();
    CCSpriteFrame* sprite =  CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(name.c_str());
    bearWalkingAnimation->addSpriteFrame(sprite);


}

CCSpriteFrame *startSpriteFrame = static_cast<CCSpriteFrame *> (bearWalkingAnimation->getFrames()->objectAtIndex(0));

//deprecated
CCSprite *startSprite = CCSprite::spriteWithSpriteFrameName("bear1.png"); 
startSprite->setPosition(ccp (size.width / 2 , size.height / 2));

CCAnimate *bearAnimate = CCAnimate::create(bearWalkingAnimation);

CCRepeatForever * animAction = CCRepeatForever::create(bearAnimate);
startSprite->runAction(animAction);

this->addChild(startSprite);

Bear正确渲染但未动画。 我有两个问题:

  • 首先也是最重要的:我做错了什么,为什么?如何修复代码以使动画生效?
  • 第二个问题spriteWithSpriteFrameName 已弃用。我应该使用哪种方法?

1 个答案:

答案 0 :(得分:2)

首先:

我想你忘记设置CCAnimation的延迟。我不熟悉2.0,但我想应该有一种设置延迟的方法。或者您可以先创建一个SpriteFrame数组,然后使用方法

CCAnimation::create(array,delay);

第二

CCSprite::createWithSpriteFrameName();