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

What does "Ref* pSender" do in Call Back function?

本文关键字:什么 功能 回拨 Ref pSender      更新时间:2023-10-16

所以我注意到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* pSendermFamilyTV。它是一个发件人,触发菜单项单击。Ref是支持自动发行功能的非常基本的类。您可以将其归还给MenuiteMimage。

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

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