图元事件支持
每个图元对象都可以设置一个监听器(#listener),通过该监听器可以处理图元相关的事件,比如图元属性变化事件,孩子变化事件等,此外图元事件通常分两步,”beforeEvent”事件在事件处理之前调用,如果返回false,则停止事件执行,”onEvent”在事件执行后调用。
事件相关属性和方法
- #listener - 监听器,注意如果图元加入到图元容器(GraphModel)中,则监听器统一由图元容器处理,不必直接在图元对象上设置监听器
- #beforeEvent(evt) - 事件处理前
- #onEvent(evt) - 事件处理后
示例
下面是设置孩子次序的默认代码,可以看出内部事件的处理过程
setChildIndex: function(child, index) {
if(!this._children || !this._children.length){
return false;
}
var oldIndex = this._children.indexOf(child);
if(oldIndex < 0 || oldIndex == index){
return false;
}
var event = new ChildIndexChangeEvent(this, child, oldIndex, index);
if(this.beforeEvent(event) === false){
return false;
}
if(this._children.remove(child)){
this._children.add(child, index);
}
this.onEvent(event);
return true;
}