cocos2dx反向传值

反向传值:
        有两个场景:A和B,A为主场景界面,跳转到B场景。A场景消失之前,B场景需要传送一些数据到A场景,A场景根据数据完成相关的操作。这种叫做反向传值,反向传值有两种方式:
        方式一:
        A场景设置一个成员函数或者定义一个闭包,B场景定义一个函数对象,即std::function<返回值类型(参数)> 。在B场景中(一般为初始化函数中)将函数对象赋值为A场景定义的成员函数或者闭包,传入参数使A场景中的函数实现,从而实现A场景得到数据完成相关操作。
        方式二:
        在A场景中定义一个EventListenerCustom,如下所示:
        auto el = EventListenerCustom::create("PROGESS",[=](EventCustom * obj){
char * pro = (char *)obj->getUserData();//获取B场景传回来的数据
loadbar->setPercent( std::atoi(pro));//完成A场景所需要的操作
});
Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(el,1);
        而B场景只需要根据eventName简单调用即可,如上代码,A场景eventName为PROGESS,只需以下一行代码:

        Director::getInstance()->getEventDispatcher()->dispatchCustomEvent("PROGESS",(void *)((i+1)/500));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值