2017-02-27 8 views
3

마우스가 캔버스 밖으로 나갔고 마우스가 -x -y 축으로 이동하면 팬을 사용하지 않으려합니다. 어떻게 관점 -x -y 축을 비활성화 할 수 있습니까?FabricJS - 패닝 뷰포트 -x -y 축 사용 안함

이것은 내 코드입니다.

var panning = false; 
canvas.on('mouse:up', function (e) { 
    if (isPaningMode) { 
     panning = false; 
    } 
}); 
canvas.on('mouse:out', function (e) { 
    if (isPaningMode) { 
     panning = false; 
    } 
}); 
canvas.on('mouse:down', function (e) { 
    if (isPaningMode) { 
     panning = true; 
    } 
}); 

canvas.on('mouse:move', function (e) { 
    canvas.selection = !isPaningMode; 
    if (isPaningMode && e && e.e && panning) { 
     var units = 10; 
     var delta = new fabric.Point(e.e.movementX, e.e.movementY); 
     canvas.relativePan(delta); 
    } 
}); 

감사합니다. 죄송합니다. 영어는 잘 할 수 없습니다. .는 800x800 난 그냥 빨간 줄무늬 영역을 사용하려면 나는 내가 그들을 원하지 않는 X가 섹션을 사용하지 않으 : :(

편집

enter image description here

내 캔버스 크기 이 필드를 스크롤하여 표시 할 수 있습니다. 개체에 대해 말한대로했는데 패닝을 수행 할 수 없습니다. 즉, 화살표 방향으로 만 이동하고 싶습니다.

답변

0

' 최신 버전의 FabricJS를 사용하여 지속적으로 개선되었습니다. 그것을 ving. 나는 과거에 canvas.on('mouse:out')이 캔버스가 아닌 객체를 목표로 삼고 있다는 것을 알게되었습니다.

다음은 작동하는 JSFiddle 인 https://jsfiddle.net/rekrah/bvgLvd3u/입니다.

enter image description here

나는 당신이 이미 캔버스의 마우스 아웃 패닝 비활성화 되었기 때문에이 문제였다 있으리라 믿고있어.

canvas.on('mouse:out', function(e) { 
    if (isPaningMode) { 
    panning = false; 
    } 
}); 

내가 영어를 이해하지 못하면 알려주세요. 아주 좋습니다. 변화의 당신의 편집 후

대량는 마우스 이동 이벤트입니다. 요약 : 우리가 어디에서 시작했는지 알 수 있도록 이동 거리를 추적하고 필요에 따라 조정할 수 있습니다.

var deltaX = 0; 
var deltaY = 0; 
canvas.on('mouse:move', function(e) { 
    if (isPaningMode && e && e.e && panning) { 
    moveX = e.e.movementX; 
    if (deltaX >= 0) { 
     deltaX -= moveX; 
     if (deltaX < 0) { 
     moveX = deltaX + moveX; 
     deltaX = 0; 
     } 
    } 
    moveY = e.e.movementY; 
    if (deltaY >= 0) { 
     deltaY -= moveY; 
     if (deltaY < 0) { 
     moveY = deltaY + moveY; 
     deltaY = 0; 
     } 
    } 
    if (deltaX >= 0 && deltaY >= 0) { 
     canvas.relativePan(new fabric.Point(moveX, moveY)); 
    } 
    } 
}); 

은 여기 새로운 업데이트 및 JSFiddle, https://jsfiddle.net/rekrah/r3gm3uh9/ :) 작업.

+0

우선 나를 도와 주셔서 감사합니다. :) 그것은 나의 소망 중 하나였습니다. 내 다른 문제를 편집 섹션에 추가합니다. – forguta

+0

@forguta 다른 문제가 해결되었습니다. 내 대답이 업데이트되었습니다. –

+0

감사합니다. @TimHarker. 나는 정말로 당신을 아주 존경합니다. :) 마지막으로 다른 제목 아래 또 다른 문제가 있습니다. 네가 볼 수 있다면 나는 아주 행복해. :) – forguta