一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

As3 Loader复制加载的图片实例程序

时间:2013-07-18 编辑:简简单单 来源:一聚教程网


先来了解一下Loader: 在 ActionScript 3.0 中使用的不是 ActionScript 2.0 MovieClipLoader 和 LoadVars 类,而是 Loader和 URLLoader 类。


Loader 类的属性允许您设置要加载的内容并在运行时监视它的加载进度。

使用 ActionScript 设置 Loader 类的属性将会覆盖在"属性"检查器或"组件"检查器中设置的同名参数。

每个组件类都有一个 version 属性,该属性是一个类属性。类属性只能用于该类本身。version 属性会返回一个字符串,该字符串指示组件的版本。要访问此属性,请使用以下代码:

trace(mx.controls.Loader.version);

Loader 类的方法摘要

下表列出了 Loader 类的方法。

 Loader.load()

加载由 contentPath 属性指定的内容。
 

注意
 
代码 trace(myLoaderInstance.version); 返回 undefined
 

使用Loader考虑 Flash Player 和 Adobe AIR 的安全模型:

 代码如下 复制代码

package net.smilecn.studyLoader{
   
    import flash.display.Sprite;
   
    public class SubMainForm extends Sprite{
       
        public function SubMainForm():void{
          
       }
    }
   
}

您可以加载来自任何可访问源的内容。

如果执行调用的 SWF 文件位于网络沙箱中并且要加载的文件是本地的,则不允许加载。

System.allowInsecureDomain() 方法来允许跨脚本排列,否则另一个安全沙箱中的 SWF 文件不能对它执行跨脚本操作。

如果被加载的内容为 AVM1 SWF 文件(用 ActionScript 1.0 或 2.0 编写),则 AVM2 SWF 文件(用 ActionScript 3.0 编写)不能对它执行跨脚本操作。但是,可以通过使用 LocalConnection 类在两个 SWF 文件之间实现通信。

如果被加载的内容为图像,则除非该 SWF 文件的域包含在该图像原始域的跨域策略文件中,否则安全沙箱之外的 SWF 文件无法访问其数据。

在只能与本地文件系统的内容交互的沙箱中的影片剪辑不能对只能与远程内容交互的沙箱中的影片剪辑使用脚本,反之亦然。

但在 Apollo 运行时中,application 安全沙箱中的内容(使用 Apollo 应用程序安装的内容)不受这些安全限制的约束。

 代码如下 复制代码

package
{
 import flash.display.Loader;
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.net.URLLoader;
 import flash.net.URLLoaderDataFormat;
 import flash.net.URLRequest;
 import flash.system.LoaderContext;
 import flash.utils.ByteArray;

 /**
  * ...
  * @author amyflash.com
  */
 public class Main extends Sprite
 {

  public function Main():void
  {
   if (stage) init();
   else addEventListener(Event.ADDED_TO_STAGE, init);
  }
  private var urlLoader:URLLoader = new URLLoader();
  private var loader1:Loader = new Loader();
  private var loader2:Loader = new Loader();
  private function init(e:Event = null):void
  {
   removeEventListener(Event.ADDED_TO_STAGE, init);
   // entry point
   var _url:String = "http://127.0.0.1/test/bin/1.jpg";
   urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
   var urlRequest:URLRequest = new URLRequest(_url);

   urlLoader.load(urlRequest);
   urlLoader.addEventListener(Event.COMPLETE, doShow);

  }

  private function doShow(_evt:Event):void
  {
   loader1.loadBytes(_evt.target.data);
            loader1.contentLoaderInfo.addEventListener(Event.COMPLETE ,swfLoadComplete);
   loader2.loadBytes(_evt.target.data);
   loader2.contentLoaderInfo.addEventListener(Event.COMPLETE ,swfLoadComplete2);
  }

  private function swfLoadComplete(e:Event):void
  {
    addChild(loader1);
  }

  private function swfLoadComplete2(e:Event):void
  {
    addChild(loader2);
    loader2.x = 100;
  }
 }

}

热门栏目