Ext.panel.Panel / Ext.view.ViewまたはモバイルアプリケーションやSenchaTouchのような他のコンテナのコンテンツをスライド/スクロールする効果をどのように達成できますか?
マウスでスクロールをドラッグするようなもの(PDFドキュメントなど)。
誰かが私にヒントやコードスニペットを教えてもらえますか、それともどこから始めればいいのか教えてもらえますか?
よろしくお願いします
RahulSinglaはiScrollをextjsと統合して、この機能をここで実現しました。ただし、extjs3を使用します。今日の時点で、グリッドパネルのextjs4にも同じものが必要です。だから私はこれらの線に沿って何かを試しますが、iScrollの代わりにextjsscrollメソッドを使用します。何か動作するようになったら更新します。
アップデート:
終わり。(私が必要としていたもののために)グリッドパネルのリスナーからドラッグスクロールを追加するのは非常に簡単であることがわかりました。コーディングはそれほど必要ありませんでした。
listeners: {
'itemmousedown': function(view, rec, item, idx, event) {
var startX = event.getX();
var startY = event.getY();
var grid = view.up('gridpanel');
var div = grid.getEl();
var body = Ext.getBody();
body.setStyle('cursor','-moz-grabbing'); //doesn't work in 4.0.7+
div.on('mousemove', function(e) {
x = e.getX(), y = e.getY()
grid.scrollByDeltaX(startX - x);
grid.scrollByDeltaY(startY - y);
startX = x
startY = y
});
body.on('mouseup', function(e){
body.setStyle('cursor','default'); //doesn't work in 4.0.7+
div.removeAllListeners();
body.removeAllListeners();
});
body.on('mouseleave', function(e, tgt){
body.setStyle('cursor','default'); //doesn't work in 4.0.7+
div.removeAllListeners();
body.removeAllListeners();
});
}
}
イントラネットで使用するのはFFだけなので、これはFFでのみテストしました。IEにmousemoveイベント.getX()
または.getY()
関数があるかどうかわからないため、微調整が必要になる場合があります。
他のパネル(グリッドパネル以外のもの)の場合、おそらくitemmousedown
リスナーをリスナーだけに置き換えmousedown
て同じ機能を持たせることができます。