将SEL_CallFuncO添加到CCArray

时间:2014-01-08 17:34:24

标签: c++ cocos2d-x

我的cocos2d-X应用程序中有以下代码未编译

   SEL_CallFuncO func1 =callfunc_selector(BPBasketLayer::addSingleNumberBasket);
   SEL_CallFuncO func2 =callfunc_selector(BPBasketLayer::addSpawnPowerUp);
   CCArray *arr=CCArray::create();
   arr->addObject(func1);
   arr->addObject(func2);

现在这给了我一个错误?我做错了什么?

亲切的问候

1 个答案:

答案 0 :(得分:1)

在不知道错误是什么的情况下,根据您实例化callfunc_selectorfunc1的方式,您似乎使用了错误的func2。我想您要使用callfuncO_selector,因为它需要CCObject*

来自CCObject.h

typedef void (CCObject::*SEL_CallFuncO)(CCObject*);

#define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR)

修改

您需要遵循Vikas在评论中建议的内容,并使用std::vector来保存函数指针,因为CCArray仅适用于CCObject派生类。所以像这样:

std::vector <SEL_CallFuncO> func_ptr_array;

func_ptr_array.push_back(callfuncO_selector(BPBasketLayer::addSingleNumberBasket));

func_ptr_array.push_back(callfuncO_selector(BPBasketLayer::addSpawnPowerUp));