关于cocosBuilder和CCBAnimationManager,单场景读入多个带动画的Node

研究cocos2d-x和cocosBuilder几天了,设想两者结合的方案是策划/美术用cocosBuilder搭场景,程序用C++生成对应的类,两者分工合作。这样问题就来了,一个ccbi文件是一个场景layer(关卡),上面可以有多个node(小怪),每个node带有多套animation(攻击,受击),最理想的是CCBReader读进来一个layer文件可以自动将node上的动作也加载好,生成这个node的CCBAnimationManager。但是看了代码发现现有的CCBReader读取一个ccbi文件只能生成一个CCBAnimationManager放在CCBReader中,无法给layer上的每个node各自配备一个,因此无法获得CCBAnimationManager意味着无法单独控制每个node的动作。这个问题该如何解决呢?

我之前考虑在加载Layer时传入一个重载过的NodeLoader,让CCBReader::readNodeGraph()时NodeLoader能直接从文件中读取Node对应的ccbi,加载好CCBAnimationManager并,但实际上readNodeGraph调用完NodeLoader之后,又有ParseNode等后续的一系列操作,使得这种方式很不协调不优雅,不知道有没有更好的理法?

求各位赐教~

晕,被坑死了,cocos2d-2.0-x-2.0.3还没有这个更新,这是cocos2d-2.1beta3-x-2.1.0才加入的特性,坑死我了!!

CCDICT_FOREACH(animationManagers, pElement)
{
    CCNode* pNode = (CCNode*)pElement->getIntKey();
    CCBAnimationManager* manager = (CCBAnimationManager*)animationManagers->objectForKey((intptr_t)pNode);
    pNode->setUserObject(manager);

    if (jsControlled)
    {
        mNodesWithAnimationManagers->addObject(pNode);
        mAnimationManagersForNodes->addObject(manager);
    }
}

刚才看了CCBReader.cpp的源代码,发现子Node的CCBAnimationManager是保持在UserObject中的,在子Node的getUserObject方法可以获得CCBAnimationManager。

弄了大半天,终于可以了,坑死爹了!!!

— Begin quote from ____

firedragonpzy 发表于 2013-1-11 09:22 url

可以获取多个动作,你加载场景的ccbi,在场景的ccbi里面有怪的ccbi,getAnimation是获取场景ccbi的动作,ge …

— End quote

我搜全局都没发现getAnimations这个函数,求问属于哪个类?应该在什么时机调用?

可以获取多个动作,你加载场景的ccbi,在场景的ccbi里面有怪的ccbi,getAnimation是获取场景ccbi的动作,getAnimations是获取的你场景ccbi里怪ccbi里的所有动作