zoukankan      html  css  js  c++  java
  • 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);

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

  • 相关阅读:
    AtCoder Regular Contest 086 E
    bzoj3192: [JLOI2013]删除物品(树状数组)
    bzoj5118: Fib数列2(费马小定理+矩阵快速幂)
    bzoj2314: 士兵的放置(树形DP)
    bzoj1907: 树的路径覆盖(树形DP)
    最小割 总结&&做题记录
    最大流 总结&&做题记录
    网络流24题之太空飞行计划
    网络流24题之负载平衡问题
    网络流24题之飞行员配对方案
  • 原文地址:https://www.cnblogs.com/atong/p/3277430.html
Copyright © 2011-2022 走看看