2017-02-20 37 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