以下代码显示画布上的红色磁盘,但在单击磁盘时从不调用事件处理程序:
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");
}
答案 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(上面的第一个选项)。