【问题标题】:Load images in the background using Flex使用 Flex 在后台加载图像
【发布时间】:2009-01-06 18:41:40
【问题描述】:

在我的 Flex 应用程序中,我调用了一个 Web 服务,它返回几十个“项目”,其中每个项目都有一个关联的图像 url。我根据这些数据创建了一个模型,并将图像组件源属性绑定到 url 字符串。

我希望更好地控制这些图像的加载,尤其是它们的加载顺序。我还想预加载不一定绑定到组件的图像。本质上,我想加载用户将首先看到的图像,然后在背景中加载他们稍后可能会看到的图像。

我可以利用 Flex 中的机制在后台加载图像吗?

【问题讨论】:

    标签: apache-flex actionscript-3


    【解决方案1】:

    将文件放入队列中并一个接一个地加载它们。 Flex(框架)不会为您执行此操作,但您可以相对轻松地在 AS3 中编写自己的代码。

    我个人对此使用自己的解决方案,但也有很多可用的现有解决方案;最常见的可能是Bulk Loader

    【讨论】:

      【解决方案2】:

      据我所知,没有开箱即用的机制,不,但您总是可以使用 URLLoader 以某种方式将图像加载到 Timer 上,以检索和存储每个字节的字节图像,直到你需要它们。根据模型的设置方式(例如,您可以将每个图像作为 ByteArray 存储在 ArrayCollection 中),这应该是一件相对简单的事情。这有帮助吗?

      【讨论】:

        【解决方案3】:

        我创建了一种机制来从 XML 文件中读取 URL 列表并在后台或按需加载它们(以先到者为准)。预加载只是加载图像并且对它没有任何作用;它依赖于浏览器缓存来保存该图像,直到 UI 执行“加载”并立即返回它。

        GalleryImageItem.status 更适合调试。 UI 对预加载器一无所知(也不必与之协调)。

        干杯

        
                 private var BackgroundLoaderIndex : int = -1;
                 private var BackgroundImageLoader : Loader = null;         
        
                 private var GalleryCanvasIndex : int = -1;          
                 private var BackgroundGalleryLoadTimer : Timer;
        
                 [ArrayElementType("GalleryImageItem")]
                 private var GalleryImageArray : Array =  new Array();
        
                private function Initialize(event : Event) : void
                {   
                    LoadGalleryImageArray();            
        
                    BackgroundGalleryLoadTimer = new Timer(4000);
                    BackgroundGalleryLoadTimer.addEventListener(TimerEvent.TIMER, BackgroundGalleryLoad);
                    BackgroundGalleryLoadTimer.start();
                }
        
                private function LoadGalleryImageArray() : void
                {           
                    var Galleries : XMLList = PageTextsXML.elements("Gallery").elements("GalleryImage");        
        
                    for (var counter : int = 0; counter 

        包 com.santacruzsoftware.lib { 公共类 GalleryImageItem 扩展对象 { 公共静态常量卸载:int = 1; 公共静态常量预加载:int = 2; 公共静态常量预加载:int = 3; 公共静态常量 PRELOAD_FAILED : int = 4; 公共静态常量加载:int = 5; 公共静态常量加载:int = 6; 公共静态常量 LOAD_FAILED : int = 7; 私有变量_resourceName:字符串; 私有变量_detailResourceName:字符串; 私有变量 _caption : 字符串; 私有变量 _status : int; 公共函数 GalleryImageItem(aResourceName : String = "", aCaption : String = "", aDetail : String = "") { 极好的(); _resourceName = aResourceName; _caption = aCaption; _detailResourceName = aDetail; _status = 已卸载; } 公共函数获取 detailResourceName() : String{ return _detailResourceName } 公共函数集 detailResourceName(value : String) : void { _detailResourceName = value } 公共函数获取资源名称():字符串{返回_资源名称} 公共函数集资源名称(值:字符串):无效{_资源名称=值} 公共函数获取标题():字符串{返回_标题} 公共函数集标题(值:字符串):无效{_caption =值} 公共函数获取状态():int { return _status } 公共函数设置状态(值:int):无效{_status =值} } }

        【讨论】:

          猜你喜欢
          • 2017-01-03
          • 2015-06-18
          • 1970-01-01
          • 2018-12-18
          • 1970-01-01
          • 2011-11-22
          • 2023-04-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多