0

返信ありがとうございます。プレーンでシンプルな形の新しいビューを作成しました。下記参照:

  var homePanelTop = new Ext.Panel({    id:'topCont',
      cls:'topCont'    
  });
  var homePanelBtm = new Ext.Panel({
      id:'btmCont',
      cls:'btmCont'
  });


  App.views.HomeIndex = Ext.extend(Ext.Panel, {
          id:'mainlayout',
          fullscreen : true,
          layout: {
                      type: 'vbox',
                      align: 'stretch',
              },
              defaults:{flex:1},
           items: [homePanelTop, homePanelBtm],
           suspendLayout: true,
              monitorOrientation: true,
              orientationchange: this.onOrientationChange,
              onOrientationChange: function(orientation, w, h){
                  this.suspendLayout = false;
                   if(orientation === 'portrait'){
                           console.log('P: ' + orientation);
                              this.add(homePanelTop, true);
                          } else {
                           console.log('L: ' + orientation);
                              this.remove(homePanelTop, false);
                      }
                      this.doLayout();
              }
  });
  Ext.reg('HomeIndex', App.views.HomeIndex);

上記のビューで期待するのは、最初のロードと縦向きで、上部パネル (黄色) と下部パネル (青色) の 2 つのパネルがあります。通常どおり回転すると、同じ効果が得られます。

しかし、私が求めているのは、横向きに回転すると、上部パネル (黄色) が削除され、下部パネル (青色) が残りのスペースを埋めることです。

次に、縦向きに戻すと、両方のパネルがデザイン サイズに戻ります (flex:1)。

上記のコード (クロムでのテスト) を使用して何が起こっているかというと、上部パネル (黄色) が上部に残っていますが、高さがわずかに小さく、本来のように消えません。

とにかく、私が持っている 2 つのコンソール トレース コマンドに注意してください。これらは、ローテーションで次の読み取り値を示しています。

最初の読み込み後、横向きに回転すると、出力は次のようになります。

L: 風景

L: 風景

存在しないコンポーネントを削除しようとしました。Ext.Container: remove は、削除するコンポーネントの引数を取ります。cmp.remove() は間違った使い方です。

L: 風景

存在しないコンポーネントを削除しようとしました。Ext.Container: remove は、削除するコンポーネントの引数を取ります。cmp.remove() は間違った使い方です。

L: 風景

存在しないコンポーネントを削除しようとしました。Ext.Container: remove は、削除するコンポーネントの引数を取ります。cmp.remove() は間違った使い方です。

縦向きに戻すと、次の出力が得られます。

L: 風景

存在しないコンポーネントを削除しようとしました。Ext.Container: remove は、削除するコンポーネントの引数を取ります。cmp.remove() は間違った使い方です。

L: 風景

存在しないコンポーネントを削除しようとしました。Ext.Container: remove は、削除するコンポーネントの引数を取ります。cmp.remove() は間違った使い方です。

P:ポートレート

P:ポートレート

したがって、風景の回転でこれを見ると、実際にはonorientationchange関数を 4 回起動する方法がいくつかあります。最初の 1 つは既に削除されているため、他の 3 つはエラーで問題ありません。

次に、ポートレートのものを使用すると、横向きの呼び出しとして2つ登録され、次に縦向きの呼び出しとして2つのヒットが登録されます。

これはすべて 1 回の移動で行われるため、何らかの理由でコードの削除と追加が予測どおりに機能せず、回転時に向きが 4 回呼び出されるのを防ぐ方法はありますか??

この開発についてアイデアを持っている人は、気軽に参加してください。

これまで助けてくれてありがとう Si

4

1 に答える 1

0

何年も後...そして、助けを求めてこれに出くわした私のような人にとってはもっと。

2つのこと。

1) 「存在しないコンポーネントを削除しようとしました」というメッセージは、ExtJS ライブラリの「開発」バージョンでのみ見られ、それが問題の信頼できる指標であるかどうかはわかりません。

2) ExtJS 4.1x にアップグレードできる場合。これにより、より優れたデバッグ ツールにアクセスできるようになります。特に「Ext JS Page Analyzer」について考えています。これにより、レイアウト エンジンが何を行っているかを、希望どおりに並べて確認することができます。

参照: http://www.sencha.com/blog/optimizing-ext-js-4-1-based-applications

于 2013-02-05T18:19:59.033 に答える