服务器之家:专注于服务器技术及软件下载分享
分类导航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服务器之家 - 编程语言 - JavaScript - js教程 - 详解CocosCreator中几种计时器的使用方法

详解CocosCreator中几种计时器的使用方法

2022-03-05 20:41gamedaybyday js教程

这篇文章主要介绍了CocosCreator中几种计时器的使用方法,推荐使用schedule,功能多些,销毁时还能自动移除

一、setTimeOut

3秒后打印abc。只执行一次。

?
1
setTimeout(()=>{console.log("abc"); }, 3000);

删除计时器,3秒后不会输出abc。

?
1
2
3
let timeIndex;
timeIndex = setTimeout(()=>{console.log("abc"); }, 3000);
clearTimeout(timeIndex);

setTimeout这样写,test函数中输出的this是Window对象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@ccclass
export default class Helloworld extends cc.Component {
 
    private a = 1;
 
    start() {
        setTimeout(this.test, 3000);
    }
 
    private test(){
        console.log(this.a);  //输出undefined
        console.log(this);    //Window
    }
}

使用箭头函数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@ccclass
export default class Helloworld extends cc.Component {
 
    private a = 1;
 
    start() {
        setTimeout(()=>{this.test()}, 3000);
    }
 
    private test(){
        console.log(this.a);  //输出1
        console.log(this);    //Helloworld
    }
}

二、setInterval

1秒后输出abc,重复执行,每秒都会输出一个abc。

?
1
setInterval(()=>{console.log("abc"); }, 1000);

删除计时器,不会再输出abc。

?
1
2
3
let timeIndex;
timeIndex = setInterval(()=>{console.log("abc"); }, 1000);
clearInterval(timeIndex);

三、Schedule

每个继承cc.Component的都自带了这个计时器

?
1
schedule(callback: Function, interval?: number, repeat?: number, delay?: number): void;

延迟3秒后,输出abc,此后每隔1秒输出abc,重复5次。所以最终会输出5+1次abc。 

?
1
this.schedule(()=>{console.log("abc")},1,5,3);

删除schedule(若要删除,则不能再使用匿名函数了,得能访问到要删除的函数)

?
1
2
3
4
5
6
7
8
9
10
11
12
private count = 1;
 
start() {
     
    this.schedule(this.test,1,5,3);
 
    this.unschedule(this.test);
}
 
private test(){
    console.log(this.count);
}

全局的schedule

相当于一个全局的计时器吧,在cc.director上。注意必须调用enableForTarget()来注册id,不然会报错。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
start() {
    let scheduler:cc.Scheduler = cc.director.getScheduler();
    scheduler.enableForTarget(this);
    //延迟3秒后,输出1,此后每1秒输出1,重复3次。一共输出1+3次
    scheduler.schedule(this.test1, this, 1, 3,3, false);
    //延迟3秒后,输出1,此后每1秒输出1,无限重复
    scheduler.schedule(this.test2, this, 1, cc.macro.REPEAT_FOREVER,3, false);
}
 
private test1(){
    console.log("test1");
}
 
private test2(){
    console.log("test2");
}
?
1
2
//删除计时器
scheduler.unschedule(this.test1, this);

以上就是详解CocosCreator中几种计时器的使用方法的详细内容,更多关于CocosCreator计时器的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/gamedaybyday/p/13047328.html

延伸 · 阅读

精彩推荐
  • js教程微信小程序使用Echarts和分包的完整步骤

    微信小程序使用Echarts和分包的完整步骤

    这篇文章主要给大家介绍了关于微信小程序使用Echarts和分包的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价...

    little_little8342022-02-15
  • js教程JavaScript逐点突破系列之this是什么

    JavaScript逐点突破系列之this是什么

    本章将专门介绍与执行上下文创建阶段直接相关的最后一个细节——this是什么?以及它的指向到底是什么,感兴趣的朋友跟随小编一起看看吧...

    蛋黄酥要不要来一口阿7332022-03-03
  • js教程javascript实现固定侧边栏

    javascript实现固定侧边栏

    这篇文章主要为大家详细介绍了javascript实现固定侧边栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    爱前端的茂茂3662022-01-20
  • js教程JavaScript实现打字游戏

    JavaScript实现打字游戏

    这篇文章主要为大家详细介绍了JavaScript实现打字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    一颗不甘坠落的流星3972022-01-21
  • js教程基于 Next.js 的 SSR/SSG 方案了解一下?

    基于 Next.js 的 SSR/SSG 方案了解一下?

    服务端渲染(SSR,Server Side Render)与客户端渲染(CSR,Client Side Render)的核心区分点简单来说就是完整的 HTML 文档在服务端还是浏览器里组装完成。...

    DYBOY4872021-12-27
  • js教程聊聊JavaScript 命名约定优秀实践

    聊聊JavaScript 命名约定优秀实践

    在开发过程中,遵循标准的命名约定可以提高代码的可读性。下面就来看看 JavaScript 中命名约定的最佳实践。...

    前端充电宝10072022-02-23
  • js教程JavaScript WeakMap使用详解

    JavaScript WeakMap使用详解

    这篇文章主要介绍了JavaScript WeakMap使用的详细介绍,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下...

    MDN7162022-01-17
  • js教程CocosCreator经典入门项目之flappybird

    CocosCreator经典入门项目之flappybird

    这篇文章主要介绍了CocosCreator经典入门项目之flappybird,详细说明了制作的每个步骤,还有详尽的代码,对CocosCreator感兴趣的同学,一定要看一下...

    冏尼9682022-03-01