0

シンプルなパネルを備えたSenchaTouchアプリケーションがあります。

var scrolling = new Ext.Application({
        launch : function () {

            var titlebar = {
                dock : 'top',
                xtype : 'toolbar',
                title : 'Scrolling Test'
            };

            new Ext.Panel({
                    fullscreen : true,
                    id : 'panel',
                    scroll : {
                        direction : 'vertical',
                        eventTarget : 'parent'
                    },
                    dockedItems : [titlebar],
                    styleHtmlContent : true,
                    html : ''
                });
        }
});

このパネルには、Ext.Ajax.request応答が表示されます。

Ext.Ajax.request({
    url : 'largefile.html',
    success : function (response) {
        Ext.getCmp('panel').update(response.responseText);
    },
    failure : function (response) {}
});

応答には約1.6MBのテキストが含まれています。はい、内容が多すぎます。しかし、iPad 1で実行しようとすると、パネルをロードした後、スクロール効果がスムーズに実行されません。1〜2秒間フリーズし、少しスクロールして、もう一度フリーズしてから終了します。

パネルのfpsを測定してみました。

panel.scroller.getLastActualFps();

Chromeブラウザでは、メソッドは約60fpsを返します。iPadでは、メソッドは約0.25fpsを返します。

私は「ライト」スクローラーコンポーネントを構築して、多くのイベントとリスナーを無効にすることを考えていました。どう思いますか?Scrollerコンポーネントは、実際には大きなコンテンツに対してこの問題を抱えていますか?

4

1 に答える 1

0

同じ問題があり、デフォルトの fps (フレーム/秒) 間隔が 80 であることがわかりました! iOS の場合、sencha スクローラーが setInterval(someDecelerationAndBounceFunction, 1000/80) を 1 秒あたり 80 回実行することを意味します。

少ないfpsオプションを試すことをお勧めします。25と言う

scroll : {
             direction : 'vertical',
             eventTarget : 'parent',
             fps : 25,
         },

私の場合、問題は解決しました。

ところで、iScroll と TouchScroll で同じ問題が発生しました...

于 2011-12-21T23:25:10.493 に答える