1

有时回调的使用非常有限,这使得它不适合成为成员函数。所以在这些时候,我总是想把事件回调写成 lambda 函数,因为使用是有限的,如果用 lambda 写代码块是紧凑的

但是这个回调通常是定义的成员函数,并且有接口限制

我想知道是否可以在 lambda 函数中重写回调?

 pMenuOK->setTarget(this,menu_selector(PlayerLayer::onPlayed));
 void PlayerLayer::onPlayed(cocos2d::CCObject *pSender);
4

3 回答 3

2

对于不带参数的简单 CCCallFunc 回调,您可能需要查看 MCBCallLambda

于 2013-11-28T11:04:46.850 回答
0

我不认为这是可能的。Cocos2d-x 调用它们的方式是使用指向 a 的目标指针CCObject和方法指针。因此,目标必须是CCObject. 正如您所说,这些是为不同类型的参数定义的。需要更改 Cocos2d-x 以支持此功能。

于 2013-05-26T13:03:25.487 回答
0

任何接受 CCCallFunc [1] 或其子类的方法都是可能的。创建自己的 CCCallFunc 子类,它保留 std::function 并覆盖 execute 方法和可能的其他一些方法(从 CCCallFunc 源中找出需要哪个实现)。

[1] http://www.cocos2d-x.org/embedded/cocos2d-x/dd/d6e/classcocos2d_1_1_c_c_call_func.html

于 2013-05-27T05:37:59.303 回答