我有这样的 CCNode 的 CCB 文件(因为我不能发布图像),
- CCNode - 自定义类(PanoController)
- -DrawerLayer - 它唯一的持有者,类型为 CCLayer
- --rawImage - 设置为 Doc root var,名称为:rawImage
我想让 rawImage 成为 mySprite 的实例,而不是 CCSprite ,因为它是默认的。
所以,加载器对于 mySprite 是这样的,
#include "mySprite.h"
class mySpriteLoader : public CCSpriteLoader{
public:
CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(mySpriteLoader, loader);
protected:
CCB_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(mySprite);
};
mySprite.h 也是这个,
#include <iostream>
#include "cocos2d.h"
#include "cocos-ext.h"
using namespace cocos2d;
using namespace extension;
class mySprite : public CCSprite, public CCBMemberVariableAssigner {
public:
// CCB_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(mySprite, create);
CCB_STATIC_NEW_AUTORELEASE_OBJECT_WITH_INIT_METHOD(mySprite, create);
bool onAssignCCBMemberVariable(CCObject* pTarget, const char* pMemberVariableName, CCNode* pNode){ return false; };
mySprite(){CCLog("init mySprite");};
};
我也像这样注册了 mySprite 加载器,
m_loaderLibrary = CCNodeLoaderLibrary::sharedCCNodeLoaderLibrary();
m_loaderLibrary->registerCCNodeLoader("mySprite", mySpriteLoader::loader());
并在来自父 CCLayer 的方法中设置 Member Assigner
bool PanoController::onAssignCCBMemberVariable(CCObject* pTarget, const char* pMemberVariableName, CCNode* pNode){
CCLOG("%s panoController Assign",pMemberVariableName);
CCB_MEMBERVARIABLEASSIGNER_GLUE(this, "rawImage", mySprite*, m_rawImage);
}
仍然会引发错误
Assertion failed: (m_rawImage), function onAssignCCBMemberVariable,
任何想法,请帮助。如果它的 CCSprite 工作正常,但 mySprite 不行。