我正在使用Typescript将大型Flash应用程序转换为画布,我在使用类扩展库对象时遇到了麻烦。
使用按钮类库
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'类型的参数不能分配给'()=>类型的参数任何&#39 ;.输入' BtnClass'不提供签名'():任何'。
任何想法都表示赞赏。
答案 0 :(得分:0)
我正在以下列方式扩展createjs组件及其工作原理。如果您有任何问题,请试着告诉我
class BtnClass extends (lib.btn2_mc as { new(): any; }) {
}
答案 1 :(得分:0)
extend
方法将类作为参数,而不是实例。
createjs.extend(BtnClass, lib.btn2_mc);
然后返回原型,您可以将方法附加到。然后,您可以从超类中提升方法,如果覆盖它们,则可以访问原型方法。有关具体用法,请参阅EaselJS课程。
不确定它会解决您的问题,但至少是正确的语法。