1. 程式人生 > >flex tree 設定圖示的幾點總結

flex tree 設定圖示的幾點總結

關於flex 設定圖示有多種方式
1.在資料來源中設定icon
2.通過設定函式 setItemItcon
3.用iconFunction 這裡說一點本人的處理方式

image class
[Embed(source="dir/1.jpg")]
[Bindable]public var green:Class;

[Embed(source="dir/2.jpg")]
[Bindable]public var yellow:Class;

[Embed(source="dir/3.jpg")]
[Bindable]public var red:Class;

[Embed(source="dir/gray.jpg")]
[Bindable]public var gray:Class;

因為我的資料來源xml 是自己動態建立的
<node name="軍網八一電視6" desc="" id="95d3364419bc4a55ae1412ed73d025cf" parentid="" icon="null"> <node id="815df5f8c0884e3996e756a0648f3440" name="temp策略1" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/> <node id="1924bd7a7a374320b73cf5c09e6bccfb" name="temp策略4" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/> <node id="c9db2a837279423a8c3626b11d61b2e5" name="uuuu" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="4" icon="gray"/> <node id="f412962ef1bb4f2fb695439e8aae21ac" name="zytest10.22" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/> <node id="b86d2dee1b9740dc88814af304b59f92" name="全域性素材視訊-XML策略" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="1" icon="green"/> <node id="55eff4c41ac74f459ba840998ebd2a38" name="全域性素材音訊-XML策略" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/> <node id="c9a186d444e9408d95da75f11c4503aa" name="全域性非MP4素材" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/> <node id="d7a9ed13dd634749b4c0561f576b458f" name="衛視訊道-收錄策略" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/> <node id="c41ab29f6714453ba2ea017e0c428eae" name="衛視訊道-檔案策略" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="4" icon="gray"/> <node id="1" name="新聞頻道-收錄策略" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/> <node id="b64744ff0eb74c778175ee7e3b0cc126" name="新聞頻道-檔案策略" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="4" icon="gray"/> <node id="83cb6c9fd26344518f10f07e6a9ecf81" name="測試用策略-請勿關聯_01" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="4" icon="gray"/> <node id="12c4cf65f99e4ea3bbd2cf1b527a4dae" name="網路視訊抓取策略" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/> <node id="11" name="英夫美迪音訊��描策略" parentid="95d3364419bc4a55ae1412ed73d025cf" selected="0" currentState="0" icon="gray"/></node>

上面是動態生成的結果
遇到問題1:使用iconFunction 你會發現每個item 都是一整個xml 無奈沒法用
遇到問題2:動態生成xml為xml設定icon clas圖示發現都變成string了
檢視原始碼如下
if (icon == null)
icon = getStyle("defaultLeafIcon");

//convert to the correct type and class
if (icon is Class)
{
return icon;
}
else if (icon is String)
{
iconClass = Class(systemManager.getDefinitionByName(String(icon)));
if (iconClass)
return iconClass;

[b][i]return document[icon];[/i][/b]
}
else
{
return Class(icon);
}

會執行到這裡 return document[icon]; 明顯是走了icon is String 看來class被轉了
於是乾脆就給引用class字串了 如:icon="gray" 在主檔案裡引入class檔案 iconClass = Class(systemManager.getDefinitionByName(String(icon)));
flex會自動根據提供的字串轉成class 然後去匹配。