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