(event)
| 291 | } |
| 292 | |
| 293 | dispatchEvent(event) { |
| 294 | if(!(event instanceof SpriteEvent)) { |
| 295 | event = new SpriteEvent(event); |
| 296 | } |
| 297 | event.target = this; |
| 298 | let type = event.type; |
| 299 | if(type === 'mousewheel') type = 'wheel'; |
| 300 | |
| 301 | const elements = [this]; |
| 302 | let parent = this.parent; |
| 303 | while(event.bubbles && parent) { |
| 304 | elements.push(parent); |
| 305 | parent = parent.parent; |
| 306 | } |
| 307 | |
| 308 | // capture phase |
| 309 | for(let i = elements.length - 1; i >= 0; i--) { |
| 310 | const element = elements[i]; |
| 311 | const listeners = element[_captureEventListeners] && element[_captureEventListeners][type]; |
| 312 | if(listeners && listeners.length) { |
| 313 | event.currentTarget = element; |
| 314 | listeners.forEach(({listener, once}) => { |
| 315 | listener.call(this, event); |
| 316 | if(once) elements.removeEventListener(listener); |
| 317 | }); |
| 318 | delete event.currentTarget; |
| 319 | } |
| 320 | if(!event.bubbles && event.cancelBubble) break; |
| 321 | } |
| 322 | // bubbling |
| 323 | if(!event.cancelBubble) { |
| 324 | for(let i = 0; i < elements.length; i++) { |
| 325 | const element = elements[i]; |
| 326 | const listeners = element[_eventListeners] && element[_eventListeners][type]; |
| 327 | if(listeners && listeners.length) { |
| 328 | event.currentTarget = element; |
| 329 | listeners.forEach(({listener, once}) => { |
| 330 | listener.call(this, event); |
| 331 | if(once) elements.removeEventListener(listener); |
| 332 | }); |
| 333 | delete event.currentTarget; |
| 334 | } |
| 335 | if(!event.bubbles || event.cancelBubble) break; |
| 336 | } |
| 337 | } |
| 338 | } |
| 339 | |
| 340 | dispatchPointerEvent(event) { |
| 341 | const {layerX: x, layerY: y} = event; |
no test coverage detected