2017-02-20 35 views
1

我使用PanelSet類創建了兩個面板的設置畫面:如何更換使用的replaceChild一個PanelSet在BrightScript

  • 在左側panelA顯示的整體設置選項
  • 列表
  • panelB顯示在右側,包括對每個項目不同的選項上panelA

列表我怎樣才能更換Panel屏幕中顯示o在右側,當用戶更改panelA的焦點項目時?

Roku's documentation指出您必須使用方法replaceChild,但我無法弄清楚這應該如何工作,或任何示例。這就是我努力,但它不工作:

function showPanelInfo() 
    if m.panelA.list.itemFocused = 0 
     m.panelset.replaceChild(m.panelB, 3) 
    else 
     m.panelset.replaceChild(m.panelC, 3) 
    end if 
end function 

Function init() 
    m.panelset = createObject("roSGNode", "PanelSet") 

    ' Left-hand side panel with two items list 
    m.panelA = m.panelset.createChild("OptionsListPanel") 

    ' Right-hand side panels with different lists for each item on left-hand side panel 
    m.panelB = m.panelset.createChild("OptionsBPanel") 
    m.panelC = createObject("roSGNode", "OptionsCPanel") 

    m.panelA.list.observeField("itemFocused", "showPanelInfo") 
... 
end function 

回答

2

如果您使用的GridPanel ListPanel,你應該觀察其createNextPanelIndex領域,簡單地設置新的面板,其nextPanel場在觀察者中。因此,通常您不應該手動插入/替換/創建PanelSet的子項。檢查它的工作原理herehere。如果你使用普通的Panel節點,它可能會更復雜一些,但我認爲情況並非如此。

示例代碼:

Function showPanelInfo() 
    if m.panelA.list.itemFocused = 0 
    m.panelset.nextPanel = m.panelB 
    else 
    m.panelset.nextPanel = m.panelC 
    end if 
end function 

Function init() 
    m.panelset = createObject("roSGNode", "PanelSet") 

    ' Left-hand side panel with two items list 
    m.panelA = m.panelset.createChild("OptionsListPanel") 

    ' Right-hand side panels with different lists for each item on left-hand side panel 
    m.panelB = m.panelset.createChild("OptionsBPanel") 
    m.panelC = createObject("roSGNode", "OptionsCPanel") 

    m.panelA.observeField("createNextPanelIndex", "showPanelInfo") 
    ... 
end function