什么" Ref * pSender"在回拨功能中做什么?

时间:2017-03-14 09:22:34

标签: c++ event-handling cocos2d-x

所以我注意到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);
    });

非常感谢您的关注和帮助:)

2 个答案:

答案 0 :(得分:1)

在您的情况下,Ref* pSendermFamilyTV。它是发件人,触发菜单项单击。 Ref是支持自动释放功能的非常基础的类。您可以将其强制转换为MenuItemImage。

您可以在此检查MenuItemImage的继承图:

http://www.cocos2d-x.org/reference/native-cpp/V3.0alpha0/d1/d30/classcocos2d_1_1_menu_item_image.html

答案 1 :(得分:1)

  

1)它是什么?

触发lambda函数的项目。在您的情况下,您的mFamilyTV

  

2)它来自哪里?我没有在lambda之外定义它。

单位稍后执行 lambda将传递它。

  

3)它的一些用法是什么?

它使您能够将相同的功能附加到多个实例,并且仍然知道哪个实例触发了它。假设你有一个lambda来在按钮点击时将背景设置为红色。您可以将它附加到15个按钮,如果您正确编程(在这种情况下,更改pSender而不是命名按钮的颜色),它适用于所有15和其他任何数量,即使您没有&# 39;甚至在编译时都知道它们,并且在你的程序中没有变量名。