2015-09-04 58 views
0

我有一个有点问题,因为我有一个树:Flex:是否可以访问默认的`mx:Tree`图标?

<mx:Tree iconField="@icon" /> 

这就是被罚款了一段时间,但现在我想部分树的有自己的默认图标。现在,由于我还没有想到的原因,源XML的icon成员被忽略了分支节点,并且默认使用但是对于叶节点,我必须有一个有效的icon成员,否则我得到一个异常。 icon=""不起作用。

采取引擎盖下看看,我跑:

trace('The default tree icon: ' + tree.itemToIcon(tree.selectedItem).toString()); 

显露默认为:

类_TreeStyle__embed_css_Assets_swf_TreeNodeIcon_770392128

这是太特殊的字符串。不用了,谢谢。我甚至没有尝试将其分配给icon

而不是做一个屏幕盖帽,瘸子编辑,然后把它变成一个自定义的图标,我该如何简单地引用该平台提供的默认图标?

Flex 3.5 SDK在这里。

+1

我会更倾向于使用上面没有使用toString()的函数,而在某些已知具有默认图标的节点上,然后将其分配给您可以设置为图标字段的变量XML。 –

+0

@AmyBlankenship这可能不是一个很糟糕的解决方法。代码看起来有点丑陋,但至少我不需要创建一个全新的图标。但它可能不起作用。我可以看到'itemToIcon()'失败,除非我制作的虚拟树被允许通过它的“创建”阶段。 – Opux

回答

0

继艾米的建议,我想:

public var m_icoDefaultLeaf:Class; 
private static var m_oDummyTree:Tree; 
private static var m_xmlDummy:XML; 

...

m_oDummyTree = new Tree; 
m_xmlDummy = <dummynode />; 
m_oDummyTree.dataProvider = m_xmlDummy; 
m_oDummyTree.addEventListener(FlexEvent.CREATION_COMPLETE, 
     function (evt:FlexEvent):void { 
      m_icoDefaultLeaf = m_oDummyTree.itemToIcon(m_xmlDummy); 
      removeChild(m_oDummyTree); 
      m_oDummyTree = null; 
      m_xmlDummy = null; 
     } 
); 
addChild(m_oDummyTree); 

然后,我只是用icon="m_icoDefaultLeaf"的XML中的叶和令人惊讶的,它的工作!

是的,它必须是那么复杂。我必须处理那个事件,并且我必须添加树作为某事的孩子。

还有一件事我试过了,是要清除所有的代码,只需使用

public var m_icoDefaultLeaf:Class = null; 

但是,刚刚作出了一个空白的图标,而不是默认。

0

我认为你的确认为&与那复杂的一切! 我还没有很长时间的工作,但也许这仍然可以帮助你一点点。从记忆我有更复杂的一次,但没有看过任何一个安静的时间! One Link of many I used with Tree setup

gallery icon="iconSymbol0AG" 

gallery label=" AR - ARGENTINA" src="com/assets/images/countriesFlagsRoundLarge/ar.png" 

gallery label=" Mauricio Photography" src="com/assets/images/PageOne/PhotographyBlogs/BlankArtists/AR/TheMauricioBlog.swf" 

file label=" Web Site" icon="iconSymbolAR" src="com/assets/images/PageOne/PhotographyBlogs/WebSites/AR/TheCollazosBlog.swf" 

gallery 
+0

对不起,但我真的不明白这一点。我想访问'mx:Tree'中的默认叶子图标并将其用于我自己的目的。我不明白你的答案如何导致这种情况。 – Opux

相关问题