Flex小部件从JSON加载图像,而不是所有显示的图像

时间:2014-12-30 03:36:49

标签: json image actionscript-3 flex widget

我正在尝试显示从JSON获取的flex小部件中的图像。除了在小部件中显示图像外,所有工作都有效。

我在窗口小部件的设计模式中有12个预定义的图像,当从JSON获取数据时,将在运行时分配源。用于INFERIOR图像的image1到image4,用于NORMAL图像的image5到图像8,用于LUXURY图像的image9到image12。 (事实上​​,我打算在运行时创建图像数组,但未能找到合适的示例。)

我使用相同的JSON数据集进行测试。奇怪的是每次小部件中显示的图像都不同,例如,有时它会显示所有图像,有时会显示image2,image4,image7,有时它会显示image1,image2,image5。

我使用的源代码:

private var value0:String;//id
private var value1:String;// type
private var value2:String;// image url

var request:URLRequest=new URLRequest();
request.url=getUrl;
request.requestHeaders=[new URLRequestHeader("Content-Type", "application/json")];
request.method=URLRequestMethod.GET;
var loader:URLLoader=new URLLoader();
loader.addEventListener(Event.COMPLETE, receive);
loader.load(request);

protected function receive(event:Event):void
{
var myResults:Array= com.adobe.serialization.json.JSON.decode(event.target.data);

for (var i:int =0;i<myResults.length; i++){
  value0 = myResults[i].goods_id;
  value1 = myResults[i].goods_type;
  value2 = myResults[i].image_url;

  if (myResults[i].drawing_type == "INFERIOR"){
    if (!image1.source){
        image1.source = value2;
    }else if (!image2.source){
        image2.source = value2;
    }else if (!image3.source){
        image3.source = value2;
    }else if (!image4.source){
        image4.source = value2;
    }
  }

  if (myResults[i].drawing_type == "NORMAL"){
    if (!image5.source){
        image5.source = value2;
    }else if (!image6.source){
        image6.source = value2;
    }else if (!image7.source){
        image7.source = value2;
    }else if (!image8.source){
        image8.source = value2;
    }
  }

  if (myResults[i].drawing_type == "LUXURY"){
    if (!image9.source){
        image9.source = value2;
    }else if (!image10.source){
        image10.source = value2;
    }else if (!image11.source){
        image11.source = value2;
    }else if (!image12.source){
        image12.source = value2;
    }
  }
}

对此有何想法?请告诉我,谢谢。

1 个答案:

答案 0 :(得分:0)

分配.source属性有点棘手。您可以使用flex Loader在运行时加载图像并在运行时分配它。这样做可以让您找出运行时和错误处理期间发生的异常。下面的代码(参见Loader _)

http://ntt.cc/2008/03/09/tips-three-ways-to-load-an-image-file-in-flex.html