2

Ext.panel.Panel / Ext.view.ViewまたはモバイルアプリケーションやSenchaTouchのような他のコンテナのコンテンツをスライド/スクロールする効果をどのように達成できますか?

マウスでスクロールをドラッグするようなもの(PDFドキュメントなど)。

誰かが私にヒントやコードスニペットを教えてもらえますか、それともどこから始めればいいのか教えてもらえますか?

よろしくお願いします

4

1 に答える 1

2

RahulSinglaはiScrollをextjsと統合して、この機能をここで実現しました。ただし、extjs3を使用します。今日の時点で、グリッドパネルのex​​tjs4にも同じものが必要です。だから私はこれらの線に沿って何かを試しますが、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て同じ機能を持たせることができます。

于 2012-01-25T21:30:37.307 に答える