Files
Superalgos/EventHandler.js
T

61 lines
1.5 KiB
JavaScript


function newEventHandler () {
let thisObject = {
name: undefined, // This is for debugging purposes only.
listenToEvent: listenToEvent,
stopListening: stopListening,
raiseEvent: raiseEvent
}
var eventHandlers = [] // Here we store all the functions we will call when an event is raiseed.
return thisObject
function initialize () {
}
function listenToEvent (eventType, handler, extraData) {
eventHandlers.push([eventType, handler, extraData])
}
function stopListening (pEventType, pHandler) {
if (pHandler === undefined) {
pHandler = 'Anonymous Function'
}
for (let i = 0; i < eventHandlers.length; i++) {
let record = eventHandlers[i]
let eventType = record[0]
let handler = record[1]
if (pHandler === 'Anonymous Function') {
if (pEventType === eventType) {
eventHandlers.splice(i, 1)
return
}
} else {
if (pEventType === eventType && pHandler.toString() === handler.toString()) {
eventHandlers.splice(i, 1)
return
}
}
}
}
function raiseEvent (eventType, event) {
for (var i = 0; i < eventHandlers.length; i++) {
/* We will execute all the functions listening to this event type. */
if (eventHandlers[i][0] === eventType) {
var handler = eventHandlers[i][1]
var extraData = eventHandlers[i][2]
handler(event, extraData)
}
}
}
}