Cocos2dx 场景切换 反向传值

 

 最近在学习cocos2dx需要在场景切换的时候传值这方面的资料貌似很少。大都都有错误.


 应用场景是 A->B B->AB退回A时并传递参数

 首先在B头文件定义

    std::function<void(int a)> func;
    std::function<void(__String * userName,  __String * passWord )> funcU;

在 A中声明并实现

    void callback1(int a);
    void callback2(__String *userName,__String *password);

 
void LoginLayer::callback1(int a)
{

    log("反向传值  %d",a);
}

void LoginLayer::callback2(__String *userName,__String *password){
    
    log("userName = %s \n password = %s ",userName->getCString(),password->getCString());
}

 

 在A->B时 注册回调函数

    auto rScene = ResigisterLayer::createScene(); 
    ResigisterLayer *resigisterLayer = dynamic_cast<ResigisterLayer*>(rScene->getChildByTag(1));
    IF_NULLPTR_LOG_ASSERT_RETURN(resigisterLayer);
    resigisterLayer->func = std::bind(&LoginLayer::callback1,this,std::placeholders::_1 );//绑定回调函数到子场景
    resigisterLayer->funcU = std::bind(&LoginLayer::callback2, this,std::placeholders::_1,placeholders::_1);
    Director::getInstance()->pushScene(rScene);


在B 场景中调用 场景中调用 func(99); 就相当于调用的主场景的 callback1(99) 相当于调用的主场景的 callback1(98)




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值