code: function listenPointGroup ( pointGroup, controller ) {
  
          pointGroup.on( "pointmousedown", function ( e ) {
  
              var currentPoint = null,
                  currentType = null,
                  index = -1,
                  vertexWidth = 0;
  
              // 非modify状态， 不处理
              if ( !controller.modifyState ) {
                  return;
              }
  
              index = e.targetPointIndex;
              currentType = e.targetPointType;
              currentPoint = pointGroup.getPointByIndex( index );
  
              // 获取到当前顶点的宽度
              vertexWidth = pointGroup.getVertexWidth();
  
              // 检查当前点击的点的控制点是否和顶点重叠
              // 如果重叠了， 则认为点击是发生在forward的控制点上的
              if ( currentType === PointGroup.TYPE_VERTEX ) {
  
                  //更新点类型
                  switch ( checkOverlapping( currentPoint, vertexWidth ) ) {
  
                      case 1:
                          currentType = PointGroup.TYPE_FORWARD;
                          break;
  
                      case 2:
                          currentType = PointGroup.TYPE_BACKWARD
                          break;
  
                  }
  
              }
  
  
              // 运行更新
              controller.enableEdit();
  
              controller.setModifyStatus( {
                  pointType: currentType,
                  pointIndex: index
              } );
  
              //更新当前的点
              this.selectPoint( index );
  
          } );
  
      }
docs: 监听点上的事件