首页 > 其他分享 >Cocos Creator中定时任务的实现

Cocos Creator中定时任务的实现

时间:2023-11-17 09:47:02浏览次数:36  
标签:Cocos 函数 Creator schedule component 计时器 定时 回调

在Cocos Creator游戏开发中,经常需要使用定时任务,例如,赛车游戏游戏开始前的倒计时,玩家游戏结束之后等待3秒进入下一局,打地鼠游戏中,地鼠出洞3秒后消失,飞机大战中飞机每隔1秒钟发射一颗子弹等等。

由于其应用场景非常多,因此, Cocos Creator 中为我们提供了方便的计时器,这个计时器源自于 Cocos2d-x 中的 cc.Scheduler,它保留在了 Cocos Creator 中并适配了基于组件的使用方式。

也许有人会认为使用JS中的 setTimeout 和 setInterval 就足够了,但是作为开发者当然可以使用这两个函数,不过使用Cocos Creator进行游戏开发,我们更推荐使用计时器,因为它更加强大灵活,和组件也结合得更好!

下面来看看它的具体使用方式:

【1】schedule执行定时任务的简单用法

例如:某个任务需要每隔1秒执行一次,代码如下:

component.schedule(function() {

this.doSomething(); // 这里的 this 指向 component

}, 1);

【2】schedule执行定时任务的灵活用法

例如:某个任务需要在10秒后开始执行,每5秒执行一次回调,重复3次。

var interval = 5; // 以秒为单位的时间间隔

var repeat = 3; // 重复次数

var delay = 10; // 开始延时

component.schedule(function() {

this.doSomething(); // 这里的 this 指向 component

}, interval, repeat, delay);

【3】scheduleOnce定时执行一次(快捷方式)

例如:某个任务需要在两秒后执行一次回调函数,之后就停止。

component.scheduleOnce(function() {

this.doSomething(); // 这里的 this 指向 component

}, 2);

【4】unschedule取消计时器

当使用了周期执行的定时任务后,之后又需要在特定的情况下取消定时任务,可以采用回调函数本身来取消计时器。

this.count = 0;

this.callback = function () {

if (this.count === 5) {

// 在第六次执行回调时取消这个计时器

this.unschedule(this.callback);

}

this.doSomething();

this.count++;

}

component.schedule(this.callback, 1);

【总结】 Component 中所有关于计时器的函数:

schedule 调度一个自定义的回调函数。

scheduleOnce 调度一个只运行一次的回调函数,可以指定 0 让回调函数在下一帧立即执行或者在一定的延时之后执行。

unschedule 取消调度一个自定义的回调函数。

unscheduleAllCallbacks 取消调度所有已调度的回调函数:定制的回调函数以及 'update' 回调函数。

这些 API 的详细描述都可以在 Component API 文档中找到。如下:

 

 

 

 

 

 

 

 

除此之外,如果需要每一帧都执行一个函数,请直接在 Component 中添加 update 函数,这个函数将默认被每帧调用,这在生命周期文档中有详细描述。另外需要注意:cc.Node 不包含计时器相关 API。

标签:Cocos,函数,Creator,schedule,component,计时器,定时,回调
From: https://www.cnblogs.com/bycw/p/17837892.html

相关文章

  • 一篇文章搞定Cocos Creator中动画编辑器的使用
    在CocosCreator游戏开发中,动画特效的使用非常频繁,而动画特效的操作对初学者来说又相对复杂,所以,初学者一定要引起重视。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀~动画编辑器使用1:创建一个节点;2:为这个节点添加一个动画组件cc.Anima......
  • 51定时计数器
        ......
  • Cocos Creator开发中的事件响应
    在CocosCreator游戏开发中,我们经常需要处理事件响应。所以,我们有必要对其中的事件响应内容熟记于心,因此,将其中重要内容归纳如下:对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。触摸事件1:触摸事......
  • CocosCreator脚本属性在属性面板的显示
    声明属性要声明属性,需要在cc.Class定义的properties字段中,填写属性名字和属性参数。cc.Class({extends:cc.Component,properties:{score:{default:0,type:cc.Integer,displayName:"分数",tooltip:"玩家的分数"}}}); 下拉列表要在属性检查器上显示为下拉......
  • nginx 定时重启
    1、编写脚本nginx_restart.sh#!/bin/bashps-ef|grepnginx|grep-vgrep>/data/nginx/nginx_restart.txtfile=$(cat/data/nginx/nginx_restart.txt|grepprocess|grep-vnginx_restart|awk'{print$2}')file_num=`cat/data/nginx/nginx_restart.......
  • Cocos Creator中骨骼动画组件的使用
    在CocosCreator游戏开发中,骨骼动画对于优化系统资源占用有很大帮助,很多时候我们都会使用。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀~spine骨骼动画工具1:骨骼动画:把动画打散,通过工具,调骨骼的运动等来形成动画2:spine是一个非常流......
  • Cocos Creator常用基础操作总结
    场景操作cc.director.loadScene('场景名称');//场景跳转cc.director.preloadScene('场景名称');//预加载场景cc.director.getScene();//获取当前场景节点操作获取节点常用方法cc.find(“节点路径”)、this.node.getChildByName(“子节点名”)等。varnode=cc.find......
  • C#winform学习4(tab光标顺序、子窗口打开限制、提示框、定时器、状态栏用户时间、下拉
    1.更改光标顺序视图-->Tab键顺序启动的时候,光标就会在用户名的文本框中,并且在按tab键的时候,光标就会按照我们定的顺序显示。即用户名文本框--tab-->密码文本框--tab-->登录--tab-->重置 2.新建类右键-->添加-->类写入代码,封装字段生成属性,右键-->重构-->封装字段-->确认--......
  • Cocos Creator之MAC平台protobufjs
    一,环境MAC二,安装brew1,命令(不必要)/bin/zsh-c"$(curl-fsSLhttps://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2,安装2.1,命令[email protected],安装位置/usr/local/lib/node_modules/protobufjs/dist三,准备一个proto测试文件(test.proto)packag......
  • 2.6 Windows驱动开发:使用IO与DPC定时器
    本章将继续探索驱动开发中的基础部分,定时器在内核中同样很常用,在内核中定时器可以使用两种,即IO定时器,以及DPC定时器,一般来说IO定时器是DDK中提供的一种,该定时器可以为间隔为N秒做定时,但如果要实现毫秒级别间隔,微秒级别间隔,就需要用到DPC定时器,如果是秒级定时其两者基本上无任何差......