Createjs, как вы расширяете класс объекта библиотеки Animate CC?

Я нахожусь в процессе преобразования большого flash-приложения в canvas с использованием Typescript, и у меня возникают проблемы с использованием классов для расширения объектов библиотеки.

Используя библиотеку классов для кнопок,

class BtnClass { 
    constructor(el: createjs.MovieClip) {
        el.addEventListener("mouseover", MouseOverHandler.bind(el));
    }
}

Если у меня есть объект, размещенный на сцене в Animate CC, я мог бы использовать этот класс, добавив действия в кадре для экспорта, и все работает хорошо,

Btn1 = new BtnClass(this.buttons.btn1_mc);

Но я не могу заставить это работать для динамически размещенных объектов библиотеки.

Я получаю сообщение об ошибке при попытке расширить мой объект с помощью этого класса на объекте библиотеки, который не размещен на этапе Animate CC.

var libraryObject = new lib.btn2_mc();
var dynamicButton = createjs.extend(new BtnClass(libraryObject), libraryObject);
currentElement.addChild(dynamicButton);

Ошибка: Аргумент типа 'BtnClass' не может быть назначен параметру типа '() => any'. Тип "BtnClass" не соответствует подписи "(): любой".

Любые идеи приветствуются.

2 ответа

extend Метод принимает классы в качестве параметров, а не экземпляры.

createjs.extend(BtnClass, lib.btn2_mc);

Затем он возвращает прототип, к которому вы можете добавлять методы. Затем вы можете продвигать методы из суперкласса, предоставляя вам доступ к методам прототипа, если вы переопределите их. См. Классы EaselJS для конкретного использования.

Не уверен, что это решит вашу проблему, но по крайней мере его правильный синтаксис.

Я расширяю компонент createjs следующим образом и он работает. Пожалуйста, попробуйте сообщить мне, если у вас есть какие-либо проблемы

class BtnClass extends (lib.btn2_mc as { new(): any; }) {
}
Другие вопросы по тегам