У меня есть класс скина, в котором я определил группу внутри моей группы содержимого:
<s:Group id="contentGroup" left="0" right="0" top="0" bottom="0" minWidth="475" minHeight="0">
<s:layout>
<s:HorizontalLayout paddingLeft="0" paddingRight="0" paddingTop="0" paddingBottom="0" gap="2" />
</s:layout>
<s:Group id="group_nav_custom_comp_hgroup_prevnext" left="0" right="0" top="0" bottom="0" minWidth="100" minHeight="0">
<s:layout>
<s:HorizontalLayout paddingLeft="0" paddingRight="0" paddingTop="0" paddingBottom="0" gap="5" />
</s:layout>
<s:Button label="Test Button"/>
</s:Group>
</s:Group>
Теперь в моем CustomComponent, который расширяет класс скина выше, я пытаюсь получить доступ к «group_nav_custom_comp_hgroup_prevnext» (которая является дочерней группой внутри contentGroup), чтобы я мог добавить элементы к нему во время выполнения:
public class GroupNavCustomContainer extends SkinnableContainer
{
private var m_group_prev_next:Group = null;
private var m_bAdded_btns:Boolean = true;
private var _prevbtn:UIComponent = null;
public function GroupNavCustomContainer()
{
super();
setStyle("skinClass", GroupNavCustomSkin);
}
//----------------------------------
public function set prevBtn(ui_comp_prev:UIComponent):void
{
if(m_group_prev_next)
{
_prevbtn = ui_comp_prev;
m_bAdded_btns = true;
invalidateProperties();
}
}
//-------------------------------------------------------------------------
override protected function partAdded(partName:String, instance:Object):void
{
trace("In partAdded");
if(partName == "contentGroup")
{
var group:Group = instance as Group;
var visualElem:IVisualElement = group.getElementAt(0);
m_group_prev_next = visualElem as Group;
}
super.partAdded(partName, instance);
}
//------------------------------------------------------------------------
override protected function commitProperties():void
{
super.commitProperties();
if (m_bAdded_btns)
{
m_bAdded_btns = false;
m_group_prev_next.addElement(_prevbtn);
}
}
}
Результат мой: group_nav_custom_comp_hgroup_prevnext просто не отображается вообще, о чем свидетельствует тот факт, что кнопка, присутствующая в нем во время компиляции, не видна. Кто-нибудь знает, как заставить его появляться? - Спасибо! -Mike
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Хорошо, я добавил свою подгруппу как часть скина:
[скина (требуется = "истина")]
public var group_nav_custom_comp_hgroup_prevnext: Group;
так что теперь я могу получить к нему доступ из любого места в CustomComponent. Но кнопка внутри group_nav_custom_comp_hgroup_prevnext по-прежнему не отображается. Кто-нибудь знает почему?
package com.viiv.digi.views.navigation
{
import mx.core.IVisualElement;
import mx.core.UIComponent;
import skins.GroupNavCustomSkin;
import spark.components.Group;
import spark.components.SkinnableContainer;
public class GroupNavCustomContainer extends SkinnableContainer
{
private var m_group_prev_next:Group = null;
private var m_bAdded_btns:Boolean = false;
private var _prevbtn:UIComponent = null;
[SkinPart(required="true")]
public var group_nav_custom_comp_hgroup_prevnext:Group;
public function GroupNavCustomContainer()
{
super();
setStyle("skinClass", GroupNavCustomSkin);
}
//----------------------------------
public function set prevBtn(ui_comp_prev:UIComponent):void
{
_prevbtn = ui_comp_prev;
m_bAdded_btns = true;
invalidateProperties();
}
//------------------------------------
public function get prevBtn():UIComponent
{
return _prevbtn;
}
//-------------------------------------------------------------------- -----
override protected function partAdded(partName:String, instance:Object):void
{
trace("In partAdded");
super.partAdded(partName, instance);
}
//-------------------------------------------------------------------- ----
override protected function commitProperties():void
{
super.commitProperties();
if (m_bAdded_btns)
{
m_bAdded_btns = false;
group_nav_custom_comp_hgroup_prevnext.addElement(_prevbtn);
}
}
}
}