Skip to content
目录

事件

GlowJS 系统内置了很多事件,如鼠标点击、键盘输入、层级变化等。用户可以监听这些事件,在事件回调中进行相应的业务逻辑处理。在 GlowJS 中,拥有事件功能的对象大都继承自 EventDispatcher 类型,比如 AppEntity 。常用事件类型参考 枚举EventType

注册事件

用户的操作以及场景层级的变化,都会触发相应的事件。你可以监听这些事件,然后在回调方法中做相应的处理,通过实例对象的 on 方法注册事件。[简单事件注册示例]

typescript
//注册一个点击事件
app.on(GLOW.EventType.Click, () => alert('您点击了画布!'));

注册单次事件

如果需要一个事件只执行一次就卸载掉,你可以使用 one 方法。 [单次事件示例1]

typescript
//注册单次事件
app.once(GLOW.EventType.Click, () => alert('我是单次事件,只会执行一次!'));

另外,你也可以通过 on 方法来注册单次事件,只需要第 3 个参数传布尔值 true 即可。 [单次事件示例2]

typescript
//注册单次事件
app.on(GLOW.EventType.Click, () => alert('我是单次事件,只会执行一次!'), true);

卸载事件

卸载事件有多个方法,可以根据需要进行调用。

移除指定编号的事件。在使用 on 或者 once 注册事件时,返回值即为事件唯一编号。

移除指定类型的事件。

移除所有事件。

暂停和恢复事件

暂停事件响应。

恢复事件响应。

自定义事件

GlowJS 内置了很多事件,但如果自己写模块的时候,也需要触发事件,该如何操作?外部注册还是使用 on ,在需要触发的地方我们使用 trigger 方法来对外触发事件。

比如你在写一个报警管理器:

javascript
class AlamrManager {
    constructor() {
        ......
    }

    enable() {
        ......
        app.trigger('AlarmEnable')
        ......
    }

    setObjAlarm(obj, alarmLevel) {
        ......
        obj.trigger('alarm', {level:alarmLevel} )
        ......
    }
}

外部注册如下:

javascript
app.on('AlarmEnable', function(ev){
    ......
})

app.getEntityById(id).on('alarm',function(ev){
    ......
})

技术支持:13352865103(柯工,微信同号);18688783852(柯工)