0

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.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>
4

1 に答える 1

0

このコードはあなたの問題を解決します。

<?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 はモバイル アプリケーションでのみ使用できることにも注意してください。

于 2013-11-12T21:29:07.767 に答える