【问题标题】:Passing Informaton for Files with Loader使用 Loader 传递文件的信息
【发布时间】:2010-01-12 07:13:25
【问题描述】:

我正在使用 Loader 从 ByteArray 中获取图像数据。问题是,一旦将图像数据传递给完整的处理程序,我就需要用一个名称(事先已知)来存储该图像数据。由于操作是异步的,我无法确定多个图像的哪个图像将首先完成加载,所以似乎我需要以某种方式传递信息......我似乎找不到任何通过任何加载器的属性含糊不清的有用信息。

关于我如何实现这一点的任何建议?

【问题讨论】:

    标签: actionscript-3 bytearray loader


    【解决方案1】:

    您不能只使用Loader.name 属性吗?

    var ldr:Loader = new Loader();
    ldr.name = 'name_of_the_loader';
    ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderListener);
    ldr.loadBytes(aByteArray);
    
    ...
    
    function loaderListener(event:Event):void {
      trace('name of the completed loader is '+LoaderInfo(event.target).loader.name);
    }
    

    你能提供一些代码吗?

    【讨论】:

    • 是的,这确实有效。我昨天遇到了这个问题,所以谢谢你解决这个问题。暂时将其标记为最佳解决方案,因为它需要最少的代码。谢谢。
    【解决方案2】:
    private var loaders:Array = [];
    private var names:Array = [];
    
        //inside loadImages method
        for(i = 0; i < len; i++)
        {
            var ldr:Loader = new Loader();
            //add listeners and call load
            loaders.push(ldr)
            names.push(name-of-ith-image);
        }
    
    private function onLoadComplete(e:Event):void
    {
        var index:Number = loaders.indexOf(LoaderInfo(e.target).loader);
        var requiredName:String = names[index];
        trace(requiredName);
    }
    

    【讨论】:

      【解决方案3】:

      第一个解决方案是使用 Dictionary 将 Loader 实例映射到名称。 像这样:

      private var names : Dictionary = new Dictionary();
      ...
      
      var ldr : Loader = new Loader();
      names [ ldr ] = 'someName';
      ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderListener);
      ldr.loadBytes(aByteArray);
      
      ...
      
      function loaderListener(event:Event):void {
        trace('name of the completed loader is '+ names[ event.target ] );
      }
      

      另一种解决方案是使用仿函数,如下所示:

      var ldr : Loader = new Loader();
      ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, createListener( 'someName' ) );
      ldr.loadBytes(aByteArray);
      
      ...
      
      function createListener( imgName : String ) : Function {
          return function ( event : Event ) : void {
            trace('name of the completed loader is '+ imgName );
          }
      }
      

      【讨论】:

        【解决方案4】:

        loader.contentLoaderInfo.url 将拥有加载图像的 URL(例如 http://sometURL/image1.jpg)。

        【讨论】:

        • 如果图像数据来自字节数组,则不是,如操作所述。
        • 如前所述,它在这种情况下不起作用,并且 URL 属性是只读的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-15
        • 1970-01-01
        • 2016-03-08
        • 1970-01-01
        相关资源
        最近更新 更多