Flex 4.5从assets文件夹加载图像需要花费太多时间

时间:2013-06-05 11:31:52

标签: actionscript-3 flex flex4 flex4.5

我正在使用flex 4.5.1。我的flex应用程序中有图像。我发出一个http请求并检索项目工作区中assets文件夹下的图片文件路径。我也在屏幕上有一个标签,我同时更新图像更新。通常它们应该同时更新,但图像在标签更新后1或2秒更新。

以下代码是图像及其初始源文件的ID:

<s:BitmapImage id="personImage" visible="true" left="10" right="10" top="10" bottom="10"
                               fillMode="scale" scaleMode="stretch" source="assets/TT.jpg"
                               verticalAlign="bottom" verticalCenter="10"/>

我按如下方式设置图像:

if(fileExist){
        personImage.source=lastEntranceService.lastResult.person.image;
        personImage.validateNow();
}else{
     personImage.source = "assets/TT.jpg";
      personImage.validateNow();
  }

lastEntranceService.lastResult.person.image; //is the filepath of the image file

我也使用验证功能,但我记得在论坛的某个地方,我读到flex图像是异步加载的。 有标签更新后,我有什么方法可以在屏幕上显示图像。我有时间限制,所以我不能等待图像更新,然后更新标签。 图像的尺寸不同,这意味着资产文件夹中的图像不同。当在屏幕上显示时,图像(需要显示)被调整为一些恒定大小。

感谢您的关注和时间。

1 个答案:

答案 0 :(得分:0)

首先必须加载,而不是设置位图源和标签文本。

private var timStart :uint;

private function click()  {
    bitmapLoader = new Loader();
    bitmapLoader.load(new URLRequest(lastEntranceService.lastResult.person.image));
    bitmapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);  

    timStart = getTimer();
} 

...

private function loaded(e :Event) {

    var timeNeedToLoad:uint = getTimer() - timStart;

    personImage.source = bitmapLoader;
    label.text = 'Bitmap: '+ lastEntranceService.lastResult.person.image;
}

修改:

检查需要加载的时间。