COCOS学习笔记之定时器

原创 2015年11月21日 15:25:38

定时器

一开始我以为cocos中的定时器与单片机中的定时器差不多,即它会以一定的时间间隔循环地触发某个特定的函数。
然而,后来发现cocos中的定时器更加强大,它还有一个定时器可以规定系统在多少时间内触发一个函数,但该函数只运行一次。


继承关系

这里写图片描述


原理介绍

Cocos2d-x调度器为游戏提供定时事件和定时调用服务。所有Node对象都知道如何调度和取消调度事件,使用调度器有几个好处:

  • 每当Node不再可见或已从场景中移除时,调度器会停止。
  • Cocos2d-x暂停时,调度器也会停止。当Cocos2d-x重新开始时,调度器也会自动继续启动。
  • Cocos2d-x封装了一个供各种不同平台使用的调度器,使用此调度器你不用关心和跟踪你所设定的定时对象的销毁和停止,以及崩溃的风险。

在cocos中一共有三种定时器:schedule,scheduleUpdate,scheduleOnce

schedule()

  • 功能:每隔某自定义时间执行某自定义函数
  • 标准格式:this->schedule(schedule_selector(fun),t);//fun为某自定义函数 t为时间
  • 停止方法:停止方法:this->unschedule(schedule_selector(fun));
  • EG:
    首先在HelloWorld.h中声明所要执行的函数:

    void Test(float t);

    然后在HelloWorld.cpp文件中实现:

    void HelloWorld::Test(float t)
    
    {
    
    log("test");
    
    }
    

    然后执行

    this->schedule(schedule_selector(HelloWorld::Test),1.0f); //表示每隔1.0f执行一次,省略参数则表示每帧都要执行

    运行之后,test每隔1.0f才会被打印一次。

ScheduleUpdate()

  • 功能:程序会每帧都会自动执行一次默认的Update函数。(注:可以理解为schedule的一个特例,固定时间,固定函数)
  • 标准格式:this->scheduleUpdate();
  • 停止方法:this->unscheduleUpdate();
  • EG:

    首先在HelloWorld.h中声明所要执行的函数:

    void Update(float t);

    然后在HelloWorld.cpp文件中实现:

    void HelloWorld::Update(float t)
    
    {
    
    log("test");
    
    }
    

    然后执行

    this->scheduleUpdate;

    运行之后,test就会源源不断的打印出来

scheduleOnce()

  • 功能:某特定时间后执行某特定函数
  • 标准格式:this->scheduleOnce(schedule_selector(fun),t);
  • EG:

    首先在HelloWorld.h中声明所要执行的函数:

    void Test(float t);

    然后在HelloWorld.cpp文件中实现:

    void HelloWorld::Test(float t)
    
    {
    
    log("test");
    
    }
    

    然后执行

    this->scheduleOnce(schedule_selector(HelloWorld::Test),1.0f);

    运行之后,test会在1.0f后打印出来、

停止所有计时器

this->unscheduleAllSelectors();

COCOS学习笔记--schedule定时器

这篇博客介绍下Cocos2d-x的定时器。 一.首先问一个问题,什么是定时器?定时器是干什么用的? 简单来说,如果你想不断去执行某个函数,或者每隔一段时间去执行一次某函数,甚至只执行一次,这时,我们就...
  • gzy252050968
  • gzy252050968
  • 2016年03月02日 13:44
  • 2314

cocos2d-x游戏引擎核心之三——主循环和定时器

cocos2d-x游戏引擎核心之三——主循环和定时器 2014-10-28 11:40 by 小天_y, 107 阅读, 0 评论, 收藏,  编辑 一、游戏主循环 在介绍游戏基本概念的...
  • u012419410
  • u012419410
  • 2016年02月02日 15:04
  • 401

cocos2dx三种定时器的使用以及停止

cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce 今天白白跟大家分享一下cocos2dx中定时器的使用方法。 首先,什么是定...
  • Arxi
  • Arxi
  • 2014年06月16日 15:33
  • 11515

quick-cocos中定时器的使用

定时器用的地方还是比较多的,游戏中的逻辑判断很多都是采用每帧执行。quick对于schedule的封装在scheduler这个lua文件中。如果是第一次接触quick的话,可能按照官方的api来写一个...
  • sun___shine
  • sun___shine
  • 2016年01月11日 20:21
  • 964

Cocos Creator中使用计时器(官方文档摘录)

在 Cocos Creator 中,我们为组件提供了方便的计时器,这个计时器源自于 Cocos2d-x 中的 cc.Scheduler,我们将它保留在了 Cocos Creator 中并适配了基于组件...
  • likendsl
  • likendsl
  • 2016年12月01日 11:54
  • 2155

cocos 全局定时器

#pragma once #include "CommonHead.h" /** * 全局定时器 */ class GlobalSchedule : public TObject { publi...
  • warrially
  • warrially
  • 2015年11月09日 22:40
  • 994

cocos2dx三种定时器的使用

cocos2dx三种定时器的使用以及停止schedule,scheduleUpdate,scheduleOnce
  • zhanghefu
  • zhanghefu
  • 2014年08月10日 07:30
  • 52523

实现 Cocos2d-x 全局定时器

cocos2d-x 中有自己的定时器实现,一般用法是在场景,层等内部实现,定时器的生命周期随着它们的消亡而消亡,就运行周期而言,相对最长的是场景,如果在多个场景切换并且保持定时器的运行,那我们就需要定...
  • z104207
  • z104207
  • 2013年12月06日 11:16
  • 1277

cocos2dx lua 多个定时器同时使用

在使用单个定时器时 local scheduler ,myupdate local time=180local function update(dt) if time...
  • harryptter
  • harryptter
  • 2015年01月28日 21:43
  • 1256

Cocos Creator 使用计时器(摘自官方文档)

使用计时器 在 Cocos Creator 中,我们为组件提供了方便的计时器,这个计时器源自于 Cocos2d-x 中的 cc.Scheduler,我们将它保留在了 Cocos Creator 中并...
  • alpha_xiao
  • alpha_xiao
  • 2016年08月03日 11:51
  • 4803
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:COCOS学习笔记之定时器
举报原因:
原因补充:

(最多只允许输入30个字)