* Method: findHover * 迭代函数,查找 hover 到的图形元素并即时做些事件分发。 * * Parameters: * shape - {Object} 图形。 * x - {number} 鼠标 x。 * y - {number} 鼠标 y。 * * Returns: * {boolean} 是否找到图形。 *
(shape, x, y)
| 555 | * |
| 556 | */ |
| 557 | function findHover(shape, x, y) { |
| 558 | var me = this; |
| 559 | if ( |
| 560 | (me._draggingTarget && me._draggingTarget.id == shape.id) // 迭代到当前拖拽的图形上 |
| 561 | || shape.isSilent() // 打酱油的路过,啥都不响应的shape~ |
| 562 | ) { |
| 563 | return false; |
| 564 | } |
| 565 | |
| 566 | var event = me._event; |
| 567 | if (shape.isCover(x, y)) { |
| 568 | if (shape.hoverable) { |
| 569 | // SMIC-修改 - start |
| 570 | if (shape.isHoverByRefDataID && shape.isHoverByRefDataID === true) { |
| 571 | if (shape.refDataID) { |
| 572 | var fid = shape.refDataID; |
| 573 | //me.painter.clearHover(); |
| 574 | //me.storage.delHover(); |
| 575 | |
| 576 | var hoverGroup = null; |
| 577 | if (shape.refDataHoverGroup) { |
| 578 | hoverGroup = shape.refDataHoverGroup; |
| 579 | } |
| 580 | |
| 581 | //查找同一个用户数据 feature 的所有图形 |
| 582 | var shapeList = me.storage._shapeList; |
| 583 | for (var i = 0, len = shapeList.length; i < len; i++) { |
| 584 | var si = shapeList[i]; |
| 585 | if (si.refDataID && fid === si.refDataID) { |
| 586 | if (hoverGroup) { |
| 587 | if (si.refDataHoverGroup && hoverGroup === si.refDataHoverGroup) { |
| 588 | me.storage.addHover(si); |
| 589 | } |
| 590 | } else { |
| 591 | me.storage.addHover(si); |
| 592 | } |
| 593 | } |
| 594 | } |
| 595 | } |
| 596 | } else { |
| 597 | me.storage.addHover(shape); |
| 598 | } |
| 599 | //初始代码: |
| 600 | // me.storage.addHover(shape); |
| 601 | // SMIC-修改 - end |
| 602 | } |
| 603 | // 查找是否在 clipShape 中 |
| 604 | var p = shape.parent; |
| 605 | while (p) { |
| 606 | if (p.clipShape && !p.clipShape.isCover(me._mouseX, me._mouseY)) { |
| 607 | // 已经被祖先 clip 掉了 |
| 608 | return false; |
| 609 | } |
| 610 | p = p.parent; |
| 611 | } |
| 612 | |
| 613 | if (me._lastHover != shape) { |
| 614 | me._processOutShape(event); |
no test coverage detected