Я пытаюсь использовать createjs EventDispatcher как способ отправки элементов из класса. Я расширяю свой класс с помощью createjs.EventDispatcher
и используя диспетчер отправки для запуска события.TypeScript + Class + createjs.EventDispatcher
я получаю следующее сообщение об ошибке, когда эта линия this.dispatchEvent(createJSEvent);
выполнена:
Uncaught InvalidStateError: Failed to execute 'dispatchEvent' on 'EventTarget': The event provided is null.
упрощенный код машинопись, чтобы продемонстрировать, что я хотел бы сделать:
export class deviceOrientation extends createjs.EventDispatcher {
constructor() {
super();
// wait 2 seconds and then fire testDispatch
setTimeout(this.testDispatch(), 2000);
}
testDispatch():void {
var createJSEvent:createjs.Event = new createjs.Event("change", true, true);
this.dispatchEvent(createJSEvent);
}
}
// This is the starting function
export function appExternalModuleTest(): void {
let _deviceOrientation: deviceOrientation;
_deviceOrientation = new deviceOrientation();
_deviceOrientation.addEventListener("change",() => this.changeOrientation());
//_deviceOrientation.on("progress",() => this.changeOrientation());
}
export function changeOrientationi(event: Event): void {
console.log('orienationHasChanged ');
}
Я использую easeljs-0.8.1.min.js
Я не уверен, что это возможно с помощью CreateJS. Есть ли лучший подход? Любая помощь очень ценится.
Обнаружена проблема: 'setTimeout (this.testDispatch(), 2000);' неправильно указан и вызывает проблему! Добавление функции стрелки для установки тайм-аута решает проблему и ошибок нет! 'setTimeout (() => {this.testDispatch();}, 2000);' –
Если вы ищете автономную версию EventDispatcher CreateJS для TypeScript, я преобразовал версию .js в .ts. Вы можете скачать здесь [https://github.com/dbiele/TypeScriptEventDispatcher](https://github.com/dbiele/TypeScriptEventDispatcher) –