cocos2d-x调用scheduleUpdate()不执行update()方法的解决办法

本文探讨了在Cocos2d-x引擎中遇到的一个常见问题:使用scheduleUpdate方法后,update方法并未被调用的现象。通过深入分析,发现是scheduleUpdate方法的误用导致。作者在热心网友的帮助下找到了解决方案,并分享了使用CCDirector、getScheduler等API正确调度更新的方法。此外,文章还提供了自定义更新方法和定时调用的实现方式,帮助开发者避免类似问题并提升代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前两天使用到每帧都更新动画的scheduleUpdate()方法,但通过cclog,我发现, scheduleUpdate()是执行了,但update()方法并没有被调用,从网上搜下,也并没有找到好的解决方法,最后,在热心网友kaka和你用温暖的目光(非常感谢两位)的帮助下,终于找到解决办法了,办法很简单,就是用下面这句话替换scheduleUpdate()就行啦:

    CCDirector::sharedDirector()->getScheduler()->scheduleUpdateForTarget(this,0,false);

或者:

    CCDirector::sharedDirector()->getScheduler()->scheduleSelector(schedule_selector(NewGame::update),this0.1,false);


当然了,使用系统提供的update总是不那么方便,还不如自己定义自己的更新方法,在指定时间内调用,如:

schedule(schedule_selector(Potentiometer::valueChange),1);

unschedule(schedule_selector(Potentiometer::valueChange));

以及

CCDirector::sharedDirector()->getScheduler()->scheduleSelector(SEL_SCHEDULE(&Potentiometer::valueChange), this, 1, false);

CCDirector::sharedDirector()->getScheduler()->unscheduleSelector(SEL_SCHEDULE(&Potentiometer::valueChange), this);

都能达到很好的效果,在间隔1s时间后,调用valueChange方法,尤其是当类的继承不为CCNode而为CCLayer时,以上两种方法还是很有效果的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值