meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
scripting:native:timer [2023/06/18 14:34] – bibiboxs | scripting:native:timer [2025/06/13 07:28] (当前版本) – bibiboxs | ||
---|---|---|---|
行 1: | 行 1: | ||
< | < | ||
- | # Timer | + | # Native/Timer |
- | 计时器是实际开发是经常用到的功能,可进行`指定时间\间隔几次`执行某段代码的作用。 | + | 计时器是开发阶段常用功能,可进行**等待指定时间\间隔几次**执行某段代码。 |
- | **计时器是世界单例模式,当切换世界\地图时将会重置全局计时器(切换世界前创建的计时器,在加载新世界时将会被清空)。** | + | **计时器实例在【切换世界\地图】时将会重置(切换世界前创建的计时器,在加载新世界时将会被清空)。** |
行 12: | 行 12: | ||
### timer.Action | ### timer.Action | ||
- | 获取当前计时器设定的函数(只读)。 | + | > 获取当前计时器设定的函数(只读)。 |
行 18: | 行 18: | ||
### timer.Time | ### timer.Time | ||
- | 获取当前计时器设定的秒数(只读)。 | + | > 获取当前计时器设定的秒数(只读)。 |
- | ### timer.Repeat | + | ### timer.LastTime |
- | 获取当前计时器设定的重复次数(只读)。 | + | > 获取当前计时器上次创建\执行的时间(只读)。 |
+ | |||
+ | |||
+ | |||
+ | ### timer.Repeat | ||
- | 如果设置为0则表示无限重复。 | + | > 获取当前计时器设定的重复次数(只读)。 |
+ | > | ||
+ | > 如果设置为0则表示无限重复。 | ||
行 32: | 行 38: | ||
### timer.OverCount | ### timer.OverCount | ||
- | 获取当前计时器已经重复过的次数(只读)。 | + | > 获取当前计时器已经重复过的次数(只读)。 |
行 38: | 行 44: | ||
### timer.Tag | ### timer.Tag | ||
- | 获取当前计时器设定的标签(只读)。 | + | > 设置当前计时器设定的标签,默认为`null`。 |
+ | > | ||
+ | > Tag标签仅有筛选的功能作用,如果不需要使用`Timer.Find()`功能可以忽略。 | ||
- | ## Function | + | ## Static |
- | ### Timer.Create() | + | ### Env.Timer.GetRealTime() |
- | 新建一个计时器,定时\定次执行指定代码。 | + | > 获取当前时间(Timer所用的时间单位,以秒为单位,并非现实时间)。 |
+ | > | ||
+ | > **扩展:可通过用`Timer.GetRealTime() - myTimer.LastTime `获取某个timer下次执行剩余时间。** | ||
- | 如果`repeat == 0`则表示无限重复计时器。 | + | ```javascript |
+ | function Env.Timer.GetRealTime(): | ||
+ | ``` | ||
+ | |||
+ | |||
+ | |||
+ | ### Env.Timer.Create() | ||
+ | |||
+ | > 新建一个计时器,定时\定次执行指定代码。 | ||
+ | > | ||
+ | > **如果`repeat == 0`则表示无限重复计时器。** | ||
+ | |||
+ | **==特别注意:`Timer`代码可能在延迟后的不同的阶段执行,请注意执行时检查相关引用是否存在(因为有可能在此期间,某些引用已经失效,导致空指针异常)。==** | ||
```javascript | ```javascript | ||
- | function Timer.Create( action: Action, | + | function |
``` | ``` | ||
```javascript | ```javascript | ||
- | Timer.Create(() => { | + | Env.Timer.Create(() => { |
- | DLog("间隔一秒后,输出这段话"); | + | DLog("Output in one second!"); |
}, 1); | }, 1); | ||
- | Timer.Create(() => { | + | Env.Timer.Create(() => { |
- | DLog("每间隔一秒,输出一次这段话,总共输出三次"); | + | DLog("Output in one second. Output three times!"); |
}, 1, 3); | }, 1, 3); | ||
``` | ``` | ||
行 66: | 行 88: | ||
- | ### Timer.Remove() | + | ### Env.Timer.Remove() |
- | 关闭一个计时器,销毁实例。 | + | > 关闭一个计时器,销毁实例。 |
```javascript | ```javascript | ||
- | function Timer.Remove( timer: Timer ) | + | function |
``` | ``` | ||
```javascript | ```javascript | ||
- | let myTimer = Timer.Create(() => { | + | let myTimer = Env.Timer.Create(() => { |
DLog(" | DLog(" | ||
}, 1); | }, 1); | ||
- | if(myTimer != null) Timer.Remove(myTimer); | + | if(myTimer != null) Env.Timer.Remove(myTimer); |
``` | ``` | ||
- | ### Timer.Find() | + | ### Env.Timer.Find() |
- | 根据`Tag`等标识查找一个计时器,只会返回找到满足条件的第一个计时器。 | + | > 根据`Tag`标识查找一个计时器,返回找到满足条件的第一个计时器。 |
- | + | > | |
- | 此功能需要搭配`timer.SetTag()`来配合使用。 | + | > 此功能需要搭配`timer.SetTag()`等方法,设置标签配合使用。 |
```javascript | ```javascript | ||
- | function Timer.Find( tag: string ) | + | function |
``` | ``` | ||
```javascript | ```javascript | ||
- | Timer.Create(() => { | + | Env.Timer.Create(() => { |
DLog(" | DLog(" | ||
- | }, 1).SetTag(" | + | }, 1).SetTag(" |
- | let findTimer = Timer.Find(" | + | let findTimer = Env.Timer.Find(" |
- | if(findTimer != null) Timer.Remove(myTimer); | + | if(findTimer != null) Env.Timer.Remove(myTimer); |
``` | ``` | ||
+ | |||
+ | ## Function | ||
### timer.SetTag() | ### timer.SetTag() | ||
- | 为指定Timer设置一个标签,以供`Timer.Find()`识别使用。 | + | > 为指定Timer设置一个标签,以供`Timer.Find()`识别使用。 |
- | + | > | |
- | 如果需求简单等情况可使用此方式,如果有较多实例的情况下,建议使用变量储存的方式,而不是动态寻找Tag。 | + | > 需求简单等情况可使用此方式,如果有较多实例的情况下,建议使用变量储存的方式,而不是动态寻找Tag。 |
行 115: | 行 139: | ||
function timer.SetTag( tag: string ) | function timer.SetTag( tag: string ) | ||
``` | ``` | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
</ | </ |