2016-12-15 5 views
0

キャンバス上にさまざまな場所に複数のオブジェクトがあり、Webページにキャンバス領域用のスクロールバーがある場合は、next/prev用のナビゲーションボタンがあります。 canvas.setActiveObject()を呼び出してアクティブにしますが、その特定の場所に自動スクロールする必要があります。fabricjs内の特定のオブジェクト位置にナビゲートする方法

これを達成するために、htmlキャンバスのコンテキストで何も見つかりませんでした。

canvas.getContext()。moveTo(x、y);ポインタを論理的に動かすが、私は物理的に移動する必要がある。ここで

function gonext(idx) { 
 
    var objs = fcanvas.getObjects(); 
 
    fcanvas.setActiveObject(objs[idx]); 
 
} 
 

 
var fcanvas = new fabric.Canvas("mycanvas"); 
 
fcanvas.setWidth(500); 
 
fcanvas.setHeight(1200); 
 
var rect = new fabric.Rect({ 
 
    left: 10, 
 
    top: 10, 
 
    width: 50, 
 
    height: 50, 
 
    fill: '#FF454F' 
 
}); 
 
fcanvas.add(rect); 
 
fcanvas.setActiveObject(rect); 
 
var rect = new fabric.Rect({ 
 
    left: 10, 
 
    top: 1100, 
 
    width: 50, 
 
    height: 50, 
 
    fill: '#FF454F' 
 
}); 
 
fcanvas.add(rect); 
 
fcanvas.renderAll(); 
 
    
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script> 
 
    <button onclick="gonext(1)">Next</button> 
 
    <div > 
 
     <canvas id="mycanvas" style="border:1px solid black"></canvas> 
 
    </div> 
 

 

NEXTをクリックして、アクションでjsfiddleで次のオブジェクトをアクティブにしますが、私もそのオブジェクト

にこの1上の任意の方向を下にスクロールする必要があるでしょうか?

+0

ここにjsfiddleの動作があります。NEXTをクリックすると次のオブジェクトがアクティブになりますが、そのオブジェクトまでスクロールする必要があります – Kiran

+0

https://jsfiddle.net/hiitskiran/hamLh0f5/14/ – Kiran

答えて

0

あなたのページでオフセットを調整する必要があるかもしれませんが、単純なwindow.scrollToはあなたを助けませんか? 以下の実行可能抜粋してみてください:、キャンバスは、ネストされたdiv要素の中にあった、私が持っていた

function gonext(idx) { 
 
    var objs = fcanvas.getObjects(); 
 
    var obj = objs[idx]; 
 
    fcanvas.setActiveObject(obj); 
 
    window.scrollTo(0, obj.top); 
 
} 
 

 
var fcanvas = new fabric.Canvas("mycanvas"); 
 
fcanvas.setWidth(500); 
 
fcanvas.setHeight(1200); 
 
var rect = new fabric.Rect({ 
 
    left: 10, 
 
    top: 10, 
 
    width: 50, 
 
    height: 50, 
 
    fill: '#FF454F' 
 
}); 
 
fcanvas.add(rect); 
 
fcanvas.setActiveObject(rect); 
 
var rect = new fabric.Rect({ 
 
    left: 10, 
 
    top: 1100, 
 
    width: 50, 
 
    height: 50, 
 
    fill: '#FF454F' 
 
}); 
 
fcanvas.add(rect); 
 
fcanvas.renderAll();
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script> 
 
    <button onclick="gonext(1)">Next</button> 
 
    <div > 
 
     <canvas id="mycanvas" style="border:1px solid black"></canvas> 
 
    </div>

+0

window.scrollTo()は私が試した最初の事は、Webページはウィジェットのようであり、各ブロックhaスクロールバーを使ってDIVを操作します。 – Kiran

+0

私はあなたを助けたいと思っていますが、私はもっと文脈が必要です。申し訳ありません – InferOn

+0

私はさらに、キャンバスを囲むdivに.scrollTopを設定しようとしましたが、助けを借りて – Kiran

0

問題だったが、私は問題を解決するために、私のルートのdivにuse.scrollTopを行いました

関連する問題