2012-10-26 2 views
0

개체를 끌면 마우스가 렌더링 영역을 벗어나면 끌기가 멈추고 (이벤트 발생) 사용자가 그립을 잃습니다.Kinetic.js가 마우스의 움푹 들어감을 잃지 않습니다

다른 모든 기술 (플래시, 원시 HTML5 Canvas 등)을 사용하면 마우스가 꺼져 있어도 그립을 줄일 수 있다는 점을 고려하면 매우 불편합니다.

문제를 해결할 방법이 있습니까?

업데이트 : 지금까지는 컨테이너 파일이 아니라 문서로 라이브러리 파일과 바인딩 수신기를 변경하여 문제를 해결했습니다. 라이브러리 파일을 해킹하는 것은 나쁘다는 것을 알고 있지만, 라이브러리의 소스 코드를 검사 한 후에 나는 그 길을 찾지 못했습니다.

답변

1

element.setCapture()을 살펴보십시오. 마우스 이벤트에 대한 이벤트 핸들러 내에서 호출 할 수 있습니다 (예 : mousedown : 브라우저 지원은 조금 드문 드문입니다

function mouseDown(e) { 
    e.target.setCapture(); 
    e.target.addEventListener("mousemove", mouseMoved, false); 
} 

있지만 (IE와 파이어 폭스는 다른 브라우저에 대해 확실하지를 지원), 당신은 당신이했습니다 문서 접근에 바인딩 후퇴해야 사용할 크로스 브라우저 이미 타격을 입었다.

+0

감사 제안에 대한 많은. 어쨌든 나는 그것을 미래의 사용을 위해 배울 수 있습니다! –

2

당신은 요소가 보이지 않는 경우 확인 등을 다시 가져올 경우 수 :

shape.on('dragend', function() { 
var pos = shape.getPosition(); 
var layer = pos.getLayer(); 
if (pos.y < 0) { 
    pos.y = 0; 
} 
var maxY = layer.getHeight() - shape.getHeight(); 
if (pos.y > maxY) { 
    pos.y = maxY 
} 
shape.setPosition(pos); 
} 
관련 문제