mirror of
https://github.com/smallmain/cocos-enhance-kit.git
synced 2025-01-14 23:11:06 +00:00
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
/* eslint-disable */
|
|
const _events = new WeakMap()
|
|
|
|
export default class EventTarget {
|
|
constructor() {
|
|
_events.set(this, {})
|
|
}
|
|
|
|
addEventListener(type, listener, options = {}) {
|
|
let events = _events.get(this)
|
|
|
|
if (!events) {
|
|
events = {}
|
|
_events.set(this, events)
|
|
}
|
|
if (!events[type]) {
|
|
events[type] = []
|
|
}
|
|
events[type].push(listener)
|
|
|
|
if (options.capture) {
|
|
// console.warn('EventTarget.addEventListener: options.capture is not implemented.')
|
|
}
|
|
if (options.once) {
|
|
// console.warn('EventTarget.addEventListener: options.once is not implemented.')
|
|
}
|
|
if (options.passive) {
|
|
// console.warn('EventTarget.addEventListener: options.passive is not implemented.')
|
|
}
|
|
}
|
|
|
|
removeEventListener(type, listener, options = {}) {
|
|
const events = _events.get(this)
|
|
|
|
if (events) {
|
|
const listeners = events[type]
|
|
|
|
if (listeners && listeners.length > 0) {
|
|
for (let i = listeners.length; i--; i > 0) {
|
|
if (listeners[i] === listener) {
|
|
listeners.splice(i, 1)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dispatchEvent(event = {}) {
|
|
const listeners = _events.get(this)[event.type]
|
|
|
|
if (listeners) {
|
|
for (let i = 0; i < listeners.length; i++) {
|
|
listeners[i](event)
|
|
}
|
|
}
|
|
}
|
|
}
|