귀하의 mousemove
기능은 앵커를 이동합니다. 앵커가 움직이면 마우스는 더 이상 polyHitArea
을 넘지 않으므로 mouseleave
이벤트가 발생하여 앵커가 숨어 있습니다. 그리고 mouseoverAnchor
전화 clearTimeout
에 mouseenter
이벤트가 -
편집
나는 이런 일이 발생을 방지하기 위해 왼손 생각할 수있는 가장 좋은 방법은 setTimeout
전화로 setVisible(false)
코드를 삽입하는 것입니다.
var polyHitArea._timeout = 0;
polyHitArea.on('mouseover', function(e) {
clearTiemout(polyHitArea._timeout);
mouseoverAnchor.setVisible(true);
stage.draw();
});
polyHitArea.on('mouseleave', function(e) {
clearTimeout(polyHitArea._timeout);
polyHitArea._timeout = setTimeout(function(){
mouseoverAnchor.setVisible(false);
}, 25); // 25 ms enough time?
stage.draw();
});
mouseoverAnchor.on('mouseenter', function(e) {
clearTimeout(polyHitArea._timeout);
});
많은 의미가 있습니다. 앵커가'mouseleave' 이벤트를 트리거하지 못하게하는 방법이 있습니까? 나는'mouseout'을 시도하고 같은 문제를 겪는다. – Nyxynyx
제이슨에게 감사드립니다. 나는 그것을 시도하고 깜박임이 멈추지 만 앵커는 사각형의 가장자리를 따라 마우스를 움직일 때 마우스 위치를 따르지 않습니다. 앵커는 마우스가 앵커를 빠져 나올 때만 위치를 업데이트하며, 마우스 위치를 부드럽게 추적하지만 사각형의 가장자리에 구속 된 앵커를 원합니다. jsfiddle.net/yZFFJ/8 – Nyxynyx
캔버스 자체에'mousemove' 이벤트를 넣고 필요한 모든 계산을 수행해야하는 것처럼 들리네요 (경계 입력, 경계선 남기기, 앵커 표시 여부 및 위치 지정)). –