注册 登录
主题 : 【已解决】怎么在schedule里传递参数呀?
级别: 新手上路
UID: 285578
精华: 0
发帖: 15
可可豆: 60 CB
威望: 60 点
在线时间: 5(时)
注册时间: 2014-01-05
最后登录: 2015-06-17
楼主 : 发表于: 2014-01-16 00:41    发自: Web Page

【已解决】怎么在schedule里传递参数呀?   

cocos2dx里的时间调度函数schedul不是只能用参数为(float dt)的函数吗


但是为想要用参数除了float dt外还有其他的参数的函数


比如说 Hero是我定的一个类(他继承CCNode)
我想要每隔一段时间就调用Ob(Hero* pHero)函数
怎么办?


(是不是还要修改cocos2dx的源文件,我不会改T_T)
[ 此帖被小塔在2014-08-25 10:37重新编辑 ]

关键词: cocos2d-x 新手
级别: 新手上路
UID: 285578
精华: 0
发帖: 15
可可豆: 60 CB
威望: 60 点
在线时间: 5(时)
注册时间: 2014-01-05
最后登录: 2015-06-17
沙发 : 发表于: 2014-01-16 00:57    发自: Web Page
呃。。小伙伴们不用回答了。。
我用标签弄好了~
级别: 新手上路
状态: 未签到 - [1天]
UID: 293097
精华: 0
发帖: 1
可可豆: 26 CB
威望: 3 点
在线时间: 3(时)
注册时间: 2014-02-18
最后登录: 2014-07-10
板凳 : 发表于: 2014-03-05 09:59    发自: Web Page
LZ,怎么搞啊?
级别: 新手上路
UID: 213417
精华: 0
发帖: 5
可可豆: 15 CB
威望: 14 点
在线时间: 47(时)
注册时间: 2013-03-15
最后登录: 2014-07-08
3 楼:  发表于: 2014-07-07 18:16    发自: Web Page
新手同问这个问题,求小伙伴们回答一下,那楼主是怎么解决这个问题的
级别: 侠客
UID: 348172
精华: 0
发帖: 83
可可豆: 299 CB
威望: 299 点
在线时间: 50(时)
注册时间: 2014-07-22
最后登录: 2017-06-21
4 楼:  发表于: 2014-08-22 16:49    发自: Web Page
汗,楼主都不知道分享,下次直接飘过不用看了
级别: 圣骑士
状态: 未签到 - [13天]
UID: 298324
精华: 6
发帖: 483
可可豆: 800 CB
威望: 798 点
在线时间: 282(时)
注册时间: 2014-03-08
最后登录: 2015-03-20
5 楼:  发表于: 2014-08-22 18:02    发自: Web Page
cocos2d-x 3.0使用了c++11的新特性std::bind,所以我们就可以用这个东西做很多很多的事了。我们可以将要回调的update函数多加上你要的几个参数,但是schedule中得要求函数的参数个数是一个啊,所以就用bind吧。这里用到的CC_CALLBACK_1宏底层就是用bind实现的,如果不理解以下的代码建议看下这个帖子http://www.cocoachina.com/bbs/read.php?tid=217556&fpage=2

bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    
    auto scheduler = Director::getInstance()->getScheduler();
    int i = 10;
    std::string name = "xiaota";
    scheduler->schedule(CC_CALLBACK_1(HelloWorld::update,this,&i,name),this,0.1f,-1,1,false,"hello");
    
    return true;
}

//回调
void HelloWorld::update(float t,void * data,std::string name)
{
    auto i = (int *)data;
    log("%s",name.c_str());
    log("%d",*i);
}


欢迎访问cocos2d-x博客www.zaojiahua.com皂荚花。
级别: 圣骑士
状态: 未签到 - [13天]
UID: 298324
精华: 6
发帖: 483
可可豆: 800 CB
威望: 798 点
在线时间: 282(时)
注册时间: 2014-03-08
最后登录: 2015-03-20
6 楼:  发表于: 2014-08-22 18:06    发自: Web Page
回 4楼(releax008) 的帖子
不要对论坛失望哦,解决方案这不是来了么,看下楼上我的回复。
欢迎访问cocos2d-x博客www.zaojiahua.com皂荚花。
级别: 侠客
UID: 348172
精华: 0
发帖: 83
可可豆: 299 CB
威望: 299 点
在线时间: 50(时)
注册时间: 2014-07-22
最后登录: 2017-06-21
7 楼:  发表于: 2014-08-24 21:51    发自: Web Page
回 6楼(小塔) 的帖子
还是斑竹比较强大呀,赞一个,分享精神可嘉,不知道斑竹对lua熟不熟,我现在在lua里面调用这个,发现没法传参数刚才斑竹说的这个CC_CALLBACK_1不知道lua里面认不认,我是通过声明你说的这个update函数为类成员来调用的,但是貌似只要一声明为类成员就会报错(不声明为类成员是可以的)。不知道楼主对lua有研究不,这个东西现在比较流行
级别: 论坛版主

状态: 未签到 - [27天]
UID: 300874
精华: 13
发帖: 2378
可可豆: 3131 CB
威望: 3189 点
在线时间: 1378(时)
注册时间: 2014-03-18
最后登录: 2016-05-06
8 楼:  发表于: 2014-08-25 10:32    发自: Web Page
回 5楼(小塔) 的帖子
5楼小塔的回帖中,i是打印不出来的。因为下一帧执行时,i的生命周期已经结束了,i被释放了。这是比较常见的错误啊。。。
级别: 圣骑士
状态: 未签到 - [13天]
UID: 298324
精华: 6
发帖: 483
可可豆: 800 CB
威望: 798 点
在线时间: 282(时)
注册时间: 2014-03-08
最后登录: 2015-03-20
9 楼:  发表于: 2014-08-25 10:36    发自: Web Page
回 7楼(releax008) 的帖子
std::bind和std::function这个是c++的东西,lua里边有没有类似的语法我就不知道了,如果以后你找到了好的方法记得回帖啊。
欢迎访问cocos2d-x博客www.zaojiahua.com皂荚花。
描述
快速回复

关注本帖(如果有新回复会站内信通知您)

验证问题:
苹果公司现任CEO是谁?2字 正确答案:库克

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部