Apache flex 在Flex4中,如何将ByteArray设置为IconItemRenderer?
我在IconItemRenderer中将ByteArray图像设置为“iconField”时遇到问题。我想我已经到了使用“iconFunction”的一半了,但是我应该调用什么来设置“iconField”中的图像呢 请帮忙!先谢谢你Apache flex 在Flex4中,如何将ByteArray设置为IconItemRenderer?,apache-flex,flex4,bytearray,iconitemrenderer,Apache Flex,Flex4,Bytearray,Iconitemrenderer,我在IconItemRenderer中将ByteArray图像设置为“iconField”时遇到问题。我想我已经到了使用“iconFunction”的一半了,但是我应该调用什么来设置“iconField”中的图像呢 请帮忙!先谢谢你 <s:IconItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.
<s:IconItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
iconFunction="initializeIcon"
iconWidth="45"
iconHeight="45">
<fx:Script>
<![CDATA[
import mx.utils.Base64Decoder;
private function initializeIcon(data:Object):void
{
var imageName:String = data.image; //image is Base64 encoded data from a dynamic array
var byteArr:ByteArray;
var base64Dec:Base64Decoder = new Base64Decoder();
base64Dec.decode(imageName);
byteArr = base64Dec.toByteArray();
//set iconField? what should I do from here on.
}
]]>
</fx:Script>
</s:IconItemRenderer>
此代码将解决您的问题
<?xml version="1.0"?>
<s:IconItemRenderer xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:component="spark.components.*"
iconField='byteArray'>
<fx:Script>
<![CDATA[
import mx.utils.Base64Decoder;
override public function set data(value:Object):void {
super.data = value;
var imageName:String = data.image;
var base64Dec:Base64Decoder = new Base64Decoder();
base64Dec.decode(imageName);
data.byteArray = base64Dec.toByteArray();
}
]]>
</fx:Script>
</s:IconItemRenderer>
仅供参考,我认为将解码器放入项目渲染器不是最佳做法。我建议把它保持在上面的水平。
还要记住,IconItemRenderer仅适用于移动应用程序。不确定它是否适用于byteArray,但请尝试setStyle(“icon”,byteArr);