使用typescript时,easeljs单击事件不会触发

时间:2014-11-30 17:20:58

标签: typescript easeljs

以下代码显示画布上的红色磁盘,但在单击磁盘时从不调用事件处理程序:

var circle = new createjs.Shape();
circle.graphics.beginFill("red").drawCircle(0, 0, 50);
circle.x = circle.y = 100;
this.stage.addChild(circle);
circle.addEventListener("click", (evt: createjs.MouseEvent) => this.handleMouseEvent);
...

private handleMouseEvent(evt: createjs.MouseEvent) {
    alert("handled");
}

1 个答案:

答案 0 :(得分:3)

如果您需要在事件内部访问此内容,请更改为:

circle.addEventListener("click", (evt: createjs.MouseEvent) => this.handleMouseEvent(evt));

如果你不需要这个,你也可以改为:

circle.addEventListener("click", this.handleMouseEvent);

原因是你正在注册一个lambda表达式来处理事件,而lambda表达式中唯一发生的事情就是返回this.handleMouseEvent。您需要将实际函数this.handleMouseEvent注册为事件处理程序(上面的第二个选项),或者在lambda中调用this.handleMouseEvent(上面的第一个选项)。