所以我注意到Ref* pSender
出现在许多回调函数中,我想知道下面的代码:
1)它是什么?
2)它来自哪里?我没有在lambda之外定义它。
3)它的一些用法是什么?
mFamilyTV = MenuItemImage::create("en_block5.png", "en_block5_hover.png",
[=](Ref* pSender) {
auto jump = JumpBy::create(1.0, Vec2(0, 0), 100, 1);
mFamilyTV->runAction(jump);
});
非常感谢您的关注和帮助:)
答案 0 :(得分:1)
在您的情况下,Ref* pSender
为mFamilyTV
。它是发件人,触发菜单项单击。 Ref
是支持自动释放功能的非常基础的类。您可以将其强制转换为MenuItemImage。
您可以在此检查MenuItemImage
的继承图:
答案 1 :(得分:1)
1)它是什么?
触发lambda函数的项目。在您的情况下,您的mFamilyTV
。
2)它来自哪里?我没有在lambda之外定义它。
单位稍后执行 lambda将传递它。
3)它的一些用法是什么?
它使您能够将相同的功能附加到多个实例,并且仍然知道哪个实例触发了它。假设你有一个lambda来在按钮点击时将背景设置为红色。您可以将它附加到15个按钮,如果您正确编程(在这种情况下,更改pSender
而不是命名按钮的颜色),它适用于所有15和其他任何数量,即使您没有&# 39;甚至在编译时都知道它们,并且在你的程序中没有变量名。