所以我注意到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);
});
非常感谢您的注意力和帮助:)
1)是什么?
是触发lambda函数的项目。在您的情况下,您的mFamilyTV
。
2)它来自哪里?我没有在lambda之外定义它。
单位执行 lambda后来将通过它。
3)有什么用法?
它使您可以将相同的功能附加到多个实例,并且仍然知道哪个实例触发了它。可以说,您有一个lambda,可以在按钮点击按钮上设置背景以红色。您可以将其连接到15个按钮,如果您对其进行了正确编程(在这种情况下,更改pSender
而不是命名按钮的颜色),它适用于所有15个。即使您甚至不知道它们在编译时,程序中没有可变名称。
在您的情况下, Ref* pSender
是 mFamilyTV
。它是一个发件人,触发菜单项单击。Ref
是支持自动发行功能的非常基本的类。您可以将其归还给MenuiteMimage。
在这里您可以检查MenuItemImage
的继承图:
http://www.cocos2d-x.org/reference/native-cpp/v3.0alpha0/d1/d30/classcocos2d_1_1_menu_item_image.html