2012-07-26 43 views
1

我的Sencha Touch 2應用程序非常複雜。所以我不能在這裏展示整個代碼片段,我將簡要描述我應該做的事情。 在我的應用程序,我有以下全局結構:Sencha Touch 2 Overlay的showBy()功能很慢

  • mainContainer上
    • 基於鏈接的實例
  • 工具欄底部
  • 工具欄頂部
  • Cardswitch
    • 不同的面板

    Cardswitch中的一個鏈接面板是主面板。該面板具有以下結構:

    • mainContainer上
      • 面板左(佈局VBOX)
        • 三個面板
      • 面板右(佈局VBOX)
        • 面板與數據視圖
        • (*我的問題面板)動態生成面板分段按鈕

    ,一切工作正常。 「問題面板」中的動態按鈕將通過基於商店數據的控制器啓動功能生成。每個按鈕被設計並填充一些html自定義圖像。

    現在我的問題: 每個按鈕還提供了一個tap功能。這個功能應該會彈出一個基於按鈕位置的覆蓋圖。所以在我的控制器功能,其中產生的按鈕,我有類似的一些代碼:

    ... 
    var panel = this.getContent(); 
    var overlay = Ext.create('MyApp.view.Overlay'); 
    panel.add(overlay); 
    ... 
    

    正如你所看到的,我是覆蓋一個單獨的類。 var面板是顯示按鈕的「問題面板」。在按鈕項輕點功能(效果很好)的代碼如下:

    listeners: { 
        tap: function() { 
    
         //overlay.showBy(this); 
         overlay.show(); 
        }          
    } 
    

    和覆蓋代碼:

    Ext.define('MyApp.view.Overlay', { 
        extend: 'Ext.Panel', 
        alias: 'widget.Overlay', 
    
        config: { 
         centered: true, 
         height: 200, 
         hidden: true, 
         html: 'This is just a overlay', 
         id: 'pOverlay', 
         ui: 'light', 
         width: 200, 
         hideOnMaskTap: true, 
         modal: true 
        } 
    
    }); 
    

    如果我做了

    panel.add(overlay); 
    

    和只需撥打水龍頭功能

    overlay.show(); 
    

    一切都很好,但速度很快,但疊加層不會彈出相對於按下的按鈕。所以我想用

    overlay.showBy(button); 
    

    但是,如果我這樣做,覆蓋大約需要超過兩秒鐘彈出,速度很慢(使用Windows 7 @quadcore鉻)。我使用煎茶觸摸2.0.1.1 我希望當我添加疊加層,而不是將它添加到面板的視口,然後調用顯示:

    //panel.add(overlay); 
    Ext.Viewport.add(overlay); 
    ... 
    overlay.show(); 
    

    它不會出現那麼快因爲我將它添加到面板。 我需要showBy()的功能,但比我的應用程序快得多。我能做什麼?我在整個應用程序中是否有錯誤?還要別的嗎? 我希望你傢伙能幫助我,因爲我用這個簡單的疊加處理各地超過三一天的....

    編輯: 爲了測試我用我的主面板(包括問題面板)作爲初始視圖因此它不包含在Cardswitch容器中。之後,我完成了一個showBy(),當整個面板包含在卡片開關中時,它比以前快得多。它不會像使用show()函數那樣快速彈出 ,但它沒問題。但這仍然不是我的解決方案,因爲我需要嵌入面板。

    我也用一個簡單的選擇字段有兩個選項嘗試。選擇字段也使用Overlay來顯示選項,選擇字段與我自己的問題面板中的疊加一樣慢。 :(

    編輯2: 我發現,問題就在這裏的一個類似的描述:http://www.sencha.com/forum/showthread.php?203501-ShowBy-with-Flexed-panels-and-a-box-layout-popup-is-slow 但在該線程的變通辦法不爲我工作,我怎樣才能使與選擇欄的項目列表中的覆蓋是。顯示在屏幕中間,而不是使用showBy()?

  • 回答

    2

    好吧,在與sencha touch(這也導致我在這裏描述的問題,這也導致了這個問題)的性能問題的幾個星期的戰鬥後,我找到了我自己的解決方案在這裏。

    我大部分的面板有一個佈局「橫向盒」應用和子板具有彈性與橫向盒佈局新面板的選項。這原因當我顯示()或隱藏()主面板時,加載時間非常長。這種佈局也會導致這個問題。

    所以我的workarround被設置佈局爲默認值,手動浮動容器和元素,並且當應用程序被啓動的初始寬度/高度設定爲與window.innerHeight /寬度的那些元素。

    的showBy()函數後是一樣快,它應該是。