• Cocos2d-x学习笔记(十六)之 定时器(时间调度)


      在游戏中,时常需要隔一段时间更新一些数据或者是人物位置,Cocosd-x提供了一个很好的功能给我们使用,那就是schedule,它是什么东西?我们可以简单地认为它是定时器(时间调度),是单线程的定时器,所有CCNode 类的子类都有这样的函数。使用示例如下:

     1 //schedule_selector 选择器将调用函数名称传进来。第二个参数是时间间隔
     2 schedule(schedule_selector(调用函数), 0.5f);
     3 
     4 //定义上面函数以后就会隔一段时间调用一次该函数,直到unschedule 被调用。这句被调用,之前schedule 的时间调度将结束。
     5 unschedule(schedule_selector(要取消的调用函数));
     6 
     7 // 暂停schedule
     8 m_pPausedTargets = pDirector->getScheduler()->pauseAllTargets();
     9 CC_SAFE_RETAIN(m_pPausedTargets);
    10 // 重新启动schedule
    11 pDirector->getScheduler()->resumeTargets(m_pPausedTargets);
    12 CC_SAFE_RELEASE_NULL(m_pPausedTargets);
    13 
    14 //使用unscheduleAllSelectors()可以使所有schedule停止.
    15 CCDirector::sharedDirector()->getScheduler()->unscheduleAllSelectors();

      还有一种固定的调用方式,就是使用scheduleUpdate 会在每帧调用一次update 方法,只要重载update 方法即可。

    1 //在init函数中加入,把scheduleUpdate加入后,在每帧都会调用update函数。
    2 this->scheduleUpdate();
    3 
    4 //参数是上一次调用这个函数到本次调用这个函数,中间间隔了多少秒
    5 void HelloWorld::update( float fDelta )
    6 {
    7 }

      当然还有一个定时器的方法,那就是scheduleOnce,多少秒后只执行一次。

    1 //5秒后执行函数,只执行一次。参数:执行函数、延迟多少秒。表示多少秒之后开始执行这个函数,并且只执行一次。
    2 scheduleOnce(schedule_selector(执行函数), 5.0f);

      好了,定时器介绍到这里就算结束了。

  • 相关阅读:
    UML_状态图
    UML_时序图
    UML_类图
    浅谈依赖注入
    MyEclipse_搭建SSH框架
    AOP:面向切面编程
    工厂模式
    (转)oracle使用expdp、impdp和exp、imp导入导出表及表结构
    oracle exp 和 imp 数据和表结构互相独立导出导入
    oracle 清空当前用户所有对象
  • 原文地址:https://www.cnblogs.com/atong/p/3277430.html
Copyright © 2020-2023  润新知